如何使用Python on Ontology编写智能合约? 第5部分:本机API

图片

在之前的Python教程帖子中,我已经在中介绍了本体智能合约
第1部分:区块链和区块API
第2部分:存储API
第3部分:运行时API
第4部分:本机API,并介绍了如何使用智能合约进行ONT / ONG传输。

今天我们将讨论如何使用升级API升级智能合约。 有2个API: DestroyMigrate

它们的用法如下:

图片

现在,让我们更详细地介绍如何使用这两个API。 在此之前,您可以在本体智能合约开发工具SmartX中创建一个新合约,并按照以下说明进行操作。 像往常一样,在文章结尾,我将链接附加到源代码。

如何使用升级API


与往常一样,在使用这两个功能之前,需要按如下所示导入它们。

from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Contract import Destroy 

销毁API


销毁API用于销毁和删除链上的智能合约。 下面是API的代码示例。

 from ontology.interop.System.Contract import Destroy from ontology.interop.System.Runtime import Notify def Main(operation, args): if operation == "destroy_contract": return destroy_contract() return False def destroy_contract(): Destroy() Notify(["The contract has been destoryed"]) return True 

迁移API


Migrate API用于迁移智能合约。 现有合同将被新迁移的合同替换。 旧合同保存的数据也将迁移到新合同。 迁移后,旧合同将被删除。
请注意,智能合约中的资产不会自动迁移,因此您需要提前将其转移出去。 否则,您将无法检索您的资产。

迁移功能的参数列表如下:

图片

请参见下面的Migrate函数的代码示例:

 from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Runtime import Notify from ontology.libont import AddressFromVmCode def Main(operation, args): if operation == "migrate_contract": if len(args) != 7: return False avm_code = args[0] need_storage = args[1] name = args[2] version = args[3] author = args[4] email = args[5] description = args[6] return migrate_contract(avm_code, need_storage, name, version, author, email, description) return False def migrate_contract(avm_code, need_storage, name, version, author, email, description): res = Migrate(avm_code, need_storage, name, version, author, email, description) if res: Notify(["Migrate successfully"]) new_contract_hash=AddressFromVmCode(avm_code) Notify(new_contract_hash) return True else: return False 

您可以按照以下步骤在SmartX上查看代码示例的执行结果:

1.在输入参数之前,将以上代码复制并粘贴到SmartX并进行编译。 输入参数时,请特别注意两个问题:

  • 确保链上不存在avm_code,否则将返回错误;
  • 迁移需要很高的气体限制,因此运行此功能时需要调整气体限制。

图片

2.部署后,您可以从仪表板获取新的合同哈希。 在此示例中,新合同哈希为be4606c4663081b70f745ed9fc64d4c3b0d9c183。

图片

总结


在本文中,我们介绍了本体区块链的升级API。 开发人员可以使用此API升级智能合约。 Destroy API用于销毁链上的智能合约,而Migrate API用于迁移智能合约。 在下一篇文章中,我们将介绍静态和动态API,以探索如何使用Python实现对本体智能合约的静态和动态调用。

此处找到GitHub上的教程。

您是开发人员吗? 确保您已加入Discord上的我们的技术社区。 另外,请访问我们网站上的开发人员中心,在那里您可以找到开发人员工具,文档等。



在其他地方找到本体


本体网站
GitHub / 不和谐
电报英语 / 俄语
Twitter / Reddit

Source: https://habr.com/ru/post/zh-CN474970/


All Articles