创建文章

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=