This is the old Algorand Developer Portal. Please head over to dev.algorand.co to explore our newly rebuilt documentation site. Please excuse us as we continue to transition content to the new portal

创建文章

We are looking for publications that demonstrate building dApps or smart contracts!
See the full list of Gitcoin bounties that are eligible for rewards.

Article Thumbnail

有状态智能合约,私钥更新和快速同步

Betanet

BetaNet、TestNet 和 MainNet 均已升级完成。详情参见论坛公告

8 月 5 日星期三,BetaNet 上发布了一个协议升级,将三个全新功能引入 Algorand 协议。本文将阐述这些功能并给出新文档链接,指引您学习使用这些功能。我们期待收到开发人员社区对这些新功能及其文档的反馈。在 Algorand 论坛上贴出您的评论和问题吧!

新功能是……
- 有状态智能合约
- 私钥更新
- 快速同步

有状态智能合约

有状态智能合约是 Algorand 第 1 层智能合约技术的下一步演进。构建在链上存储状态的应用,并将之与 Algorand 其他第 1 层技术(如原子转移和 Algorand 标准资产)相结合,可以创建出非常强大的应用,比如执行您自己的拍卖或创建高度定制的安全通证

建议从下面几步开始:

  1. 查阅重新组织的智能合约章节。现在此章节分出了无状态智能合约和有状态智能合约子章节。这两种智能合约的执行条件不一样,但都使用名为 TEAL 的同一底层智能合约语言。
  2. 阅读有状态智能合约完整技术文档,并阅读本指南学习如何创建您的第一个有状态应用!
  3. 还可参考全新的 Algorand 应用构建指南,学习如何编写 Algorand 第 1 层功能以创建非常先进的应用,确保速度、安全与可扩展性。

术语说明

有状态智能合约也可能被称为“有状态应用”。这与其相应的交易类型有关,此类型称为应用交易。但是,“应用”也可能指更传统的面向用户的完整应用程序,其中可能包括有状态智能合约(即“有状态应用”),但可能也包括无状态智能合约、资产、原子转移及任何其他功能的任意组合。

私钥更新

Alice 在 Algorand 上生成一个账户,打算用作她的个人热钱包。该账户以一个公开地址标识,而 Alice 持有相应的私有支出密钥。Alice 将她的公开地址交给各第三方,以便现在和将来都能从这些第三方接收 Algo 币和其他资产。她还使用自己的地址传递 KYC/AML,投资房地产项目。

现在假设 Alice 认为自己的私有支出密钥可能被盗了,或者她只是想要保持良好的安全实践,定期轮换她的密钥。问题在于,如果更改了支出密钥,公开地址也将一同改变,Alice 就得联系她交互过的每一个第三方,提供她的新地址。真是太麻烦了!

私钥更新了解一下!

其实,Alice 可以简单地发起一个特殊交易,将新的私有支出密钥注册为现有公开地址的授权方法。这样一来,Alice 既能保持自身账户高度安全,又能方便地在交互过的所有平台统一维护她的地址标识。只要愿意,她还能将自己的账户私钥更新成多签账户,甚至是智能合约账户

除了作为一个简单而又安全的功能,私钥更新还有很多用处。例如还可以让其他人创建账户,或许往里面装些资产,然后将所有权完全转移给另一个人。

点击此处全面了解私钥更新。

快速同步

最后,我们来谈谈同样重要的一个新特性:如何连接 BetaNet 以试用这些新功能!您有几个选择:运行您自己的节点使用沙箱,或者通过 Purestake 等 API 服务连接。第一个选项的问题在于,如果您从头开始构建节点,就得等待节点与网络其他部分同步后才能发送交易。而同步要求节点验证此区块链有史以来的每一个区块,可能耗费数小时乃至数天,具体取决于区块链的历史有多长。对于只是想开始使用新协议功能的应用开发人员来说,这就不太理想了。

快速同步了解一下!

与其干耗数天等待节点同步,不如使用快速同步分分钟同步!现在就可以使用此功能,无需等待升级完成。参阅使用快速同步文档熟悉这一功能。

或者,安装节点后执行下列代码:

% CATCHPOINT=$(curl https://algorand-catchpoints.s3.us-east-2.amazonaws.com/channel/betanet/latest.catchpoint)
% goal node catchup $CATCHPOINT -d <betanet-data>

检查节点状态,观察追赶情况:

% goal node status -d <betanet-data>

示例输出:

Last committed block: 5084087
Sync Time: 11.0s
Catchpoint: 5080000#Z2Z7OESROGAE5OMEGY4SQ2R4C4V35B45L7XLPT6TL5SFUXGU2MKQ
Catchpoint total accounts: 1246
Catchpoint accounts processed: 1246
Catchpoint total blocks: 1000
Catchpoint downloaded blocks: 58
Genesis ID: betanet-v1.0
Genesis hash: mFgazF+2uRS1tMiL9dsj01hJGySEmPN28B/TjjvpVW0=

几分钟后再执行一遍,就可以看到您的节点已经完成同步了:

Last committed block: 5084163
Time since last block: 0.3s
Sync Time: 0.0s
Last consensus protocol: https://github.com/algorandfoundation/specs/tree/e5f565421d720c6f75cdd186f7098495caf9101f
Next consensus protocol: https://github.com/algorandfoundation/specs/tree/3a83c4c743f8b17adfd73944b4319c25722a6782
Round for next consensus protocol: 5107702
Next consensus protocol supported: true
Last Catchpoint: 5080000#2BNEE2WRZU3B55FKTH4STF2OIWEN47LKYMNOTPZY2GHQTQBAA76Q
Genesis ID: betanet-v1.0
Genesis hash: mFgazF+2uRS1tMiL9dsj01hJGySEmPN28B/TjjvpVW0=