
在之前的Python教程帖子中,我已经在中介绍了本体智能合约
第1部分:区块链和区块API和
第2部分:存储API第3部分:运行时API第4部分:本机API,并介绍了如何使用智能合约进行ONT / ONG传输。
今天我们将讨论如何使用
升级API升级智能合约。 有2个API:
Destroy和
Migrate 。
它们的用法如下:

现在,让我们更详细地介绍如何使用这两个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