合约ID,助力数据迁移的通关秘籍 | 三分钟入门Neo3

2020-02-28 11:40 栏目:经验之谈 来源: 查看()
在最后一篇文章“开始使用Neo3的三分钟”中,我们介绍了脚本哈希在Neo2环境中的应用及其对开发人员和网络可能产生的负面影响。 尽管契约重定向可以解决数据迁移过程中的一些问题,但该方案仍然要求第三方服务提供商在使用新的契约哈希之前手动更新他们的服务。因此,Neo的创始人和核心开发者张正文提出了一个新方案“唯一合同id”。

唯一合同编号

合约ID,助力数据迁移的通关秘籍 | 三分钟入门Neo3

张正文介绍了“唯一合同标识”的好处: “主要区别在于,使用GUID不需要添加重定向记录,并且合同可以随时升级,而无需记录额外的信息来防止旧合同的重新部署。因为如果部署了旧协定,将会创建一个新的GUID。 该方案不仅减轻了数据迁移对合同存储的压力,而且在合同更新后还保留了原始标识符(脚本哈希)。每个标识都分配给每个已部署的合同,并且在整个代码更新过程中都存在。这意味着与Neo智能合同集成的服务提供商在合同更新时不再需要手动更新其基础设施。 实施合同标识 在最初的提案提出后,张正文首先在当地测试了提案的可行性,并提供了一个实用的“唯一合同标识”生成计划。 NGD软件开发商刘梦雨在确认该提案时强调,考虑到哈希冲突对合同存储的威胁,将合同的数据前缀编码为标识格式不仅可以减少存储空间,还可以确保存储安全。 注意到“唯一合同标识”的安全性和要求,刘梦雨提出了生成所需合同标识的两种选择。在最初建议使用块高度、事务索引和生成密钥的syscall计数器之后,提出了“全局计数器”的概念。 全局计数器的优点是简单。每当合同部署到Neo3时,它都使用一个计数器来确定和获取下一个可用的标识号,同时计数器号递增。对每个新部署重复此过程,以确保每个合同都收到一个唯一的标识号。 刘梦雨已经实现了这两个方案,但事实证明,全球计数器最受开发者欢迎,因为它消除了对哈希冲突的担忧。然而,该方案的缺点是混淆了原始合同和新合同的类别。如果将来需要添加新的本地合同,全局计数器(和所有合同标识)将受到影响。 核心开发人员Shargon建议原始合同应该采用递减ID(-1,-2,-3)的负值.等等。),这样原始合同和新合同都可以使用同一个全局计数器,而不会影响彼此的标识分配。 虽然“唯一合同标识”最初是为了防止拒绝服务攻击而设计的,但它也为开发人员和第三方服务提供商提供了许多其他帮助,并有助于降低块的存储空间。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发