ag真人登录_ag真人注册网页ag真人登录_ag真人注册网页

官方视频
ag真人注册-Python智能合约教程之合约升级
来源:ag真人登录    发布时间:2021-05-21 16:28:02
本文摘要:在上一期的技术视点中,我们讲解了合约原生 API,描写了如何利用智能合约展开ONT / ONG 账户。

ag真人注册

在上一期的技术视点中,我们讲解了合约原生 API,描写了如何利用智能合约展开ONT / ONG 账户。本期我们将辩论如何通过 Upgrade API 来展开合约升级。合约升级共计2个 API,网卓新闻网,分别为 Destroy 和 Migrate。

其用法如下:下面我们明确描写一下这两个 API 的用于方法。在这之前,小伙伴们可以在本体智能合约开发工具 SmartX 中新建一个合约,回来我们展开操作者。

跟以前的 API 介绍一样,在文章最后我们将得出这次介绍的视频示例。2. Upgrade API 用于方法用于这两个函数前必须引进。

ag真人登录

下面两条语句分别引进了 Migrate 和 Destroy 这两个函数。from ontology.interop.Ontology.Contract import Migratefrom ontology.interop.System.Contract import Destroy2.1 Destroy APIDestroy API 用作封存合约,原有合约将不会在链上被移除。

ag真人网页版

下面是用于该 API 的示例代码。from ontology.interop.System.Contract import Destroyfrom ontology.interop.System.Runtime import Notifydef Main(operation, args):if operation == "destroy_contract":return destroy_contract()return Falsedef destroy_contract():Destroy() # 调用destroy 封存此合约Notify(["The contract has been destoryed"])return True在 SmartX 上可以看见该示例代码的运营结果:将以上代码粘贴至 SmartX 编译器并部署;再度页面部署会弹出有「合约部署告终,该合约早已部署过」,因为链上早已不存在完全相同合约;3. 运营 destroy_contract 函数封存合约;4. 再度页面部署合约,不会找到合约可以再度部署,会再行插入「合约部署告终,该合约早已部署过」。

这可以证明原本合约早已在链上被封存。2.2 Migrate APIMigrate API 用作迁入合约, 原有合约将不会被新的合约代替,原有合约中的数据也将自动迁入到新的合约。

ag真人登录

迁入数据量越大,迁入费用越高。迁入顺利后,原有合约不会被移除。特别注意:合约中的资产会被自动迁入,必须提早并转回头。

否则该合约中的资产将无法拿回,相等于被转至黑洞地址。Migrate 函数的起源于参数列表如下:某种程度,我们得出用于 Migrate 函数的合约示例代码:from ontology.interop.Ontology.Contract import Migratefrom ontology.interop.System.Runtime import Notifyfrom ontology.libont import AddressFromVmCodedef Main(operation, args):if operation == "migrate_contract":if len(args) != 7:return Falseavm_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 Falsedef migrate_contract(avm_code, need_storage, name, version, author, email, description):res = Migrate(avm_code, need_storage, name, version, author, email, description) # 调用Migrate 迁入此合约if res:Notify(["Migrate successfully"])new_contract_hash=AddressFromVmCode(avm_code) # 计算出来新的合约地址Notify(new_contract_hash) # 打印机出有合约地址return Trueelse:return False在 SmartX 上可以看见该示例代码的运营结果:1. 将以上代码粘贴至 SmartX 编译器,放入参数。参数放入时必须特别注意以下两点:a. 要证实 avm_code 在链上不不存在,不然不会报错;b. Migrate 必须较高的 gas limit,所以运营函数时要调整 gas limit。

2. 部署顺利后,可以从控制器获得新的合约哈希。该示例中,be4606c4663081b70f745ed9fc64d4c3b0d9c183 即为新的合约哈希。


本文关键词:ag真人登录,ag真人注册,ag真人网页版

本文来源:ag真人登录-www.xulydoctoruou.com

上一新闻:子女关爱,老人防骗第一道“防火墙”

下一新闻:莫让家用摄像头成了隐私风险口:ag真人网页版

推荐阅读

企业要闻

企业动态

门窗百科

太阳能着色 互补系统 易护理 保温 环保节能
预约报名 免费测量 免费设计 免费报价 免费安装 终身维护
版权所有©2011-2020 渭南市ag真人注册科技股份有限公司
陕ICP备97860939号-7
联系地址: 陕西省渭南市奈曼旗工滔大楼92号
联系电话:062-490477405
联系邮箱:663395747@qq.com
传真号码:063-40873058