在上一篇「三分钟入门Neo3」文章中,我们讲解了脚本哈希(Script Hashes)在Neo2环境中的应用于,以及它们有可能对开发者和网络导致的负面影响。尽管合约重定向需要解决问题数据迁入过程中的一些问题,但这一方案依旧必须第三方服务商手动改版其服务,才能用于新的合约哈希。因此,Neo创始人及核心开发者张铮文又明确提出了一个新的方案「唯一合约ID」(Unique Contract IDs)。
唯一合约ID张铮文讲解了「唯一合约ID」带给的益处:“主要区别在于,用于GUID不必须加到重定向记录,并且合约可以随时升级,而需要记录其他信息以避免重新部署原有合约。因为如果部署了原有合约,则不会创立新的GUID。
”此方案不仅需要减慢数据迁入对于合约存储的压力,还能在合约改版后依旧保有原先的标识符(脚本哈希)。将每个ID分配给每个已部署的合约,并在代码更新过程中仍然不存在。这意味著与Neo智能合约构建的服务商将仍然必须在合约改版时手动改版其基础架构。实行合约ID可行性方案明确提出后,张铮文再行在本地测试了此方案的可行性,并获取了一个贯彻的「唯一合约ID」分解方案。
NGD软件开发者刘梦雨在证实该议案时特别强调,考虑到合约存储遭威胁后不会导致哈希冲突,所以将合约的数据后缀以ID形式编码,不仅需要减轻存储空间,也能确保存储的安全性。注意到对「唯一合约ID」安全性与的拒绝,刘梦雨建议了两种最合适方案来分解所需的合约ID。
在最初建议用于区块高度,事务索引和分解密钥的syscall计数器之后,又明确提出了「全局计数器」的概念。全局计数器的优势在于非常简单。每次将合约部署到Neo3中,它都会用于计数器来确认并提供下一个能用的ID号,与此同时计数器的数字也不会递减。
每个新的部署都会反复此过程,以保证每个合约都接到唯一的ID号。刘梦雨实行了这两种方案,但是事实证明,全局计数器最不受开发者青睐,因为它避免了对哈希冲突的忧虑。但这个方案有个缺点是误解原生合约与新的合约的类别,如果将来必须加到新的本地合约,全局计数器(以及所有合约ID)将受到影响。核心开发者Shargon则明确提出建议,指出原生合约不应使用负值,具备递增的ID(-1,-2,-3 ..等),网卓新闻网,以便原生合约与新的合约都可以用于完全相同的全局计数器,彼此之间影响彼此的ID分配。
尽管「唯一合约ID」最初是为了避免DoS反击而设计的,但这也为开发者、第三方服务商获取了许多其他协助,并有助减慢区块的存储空间。
本文关键词:新京葡萄官方网站
本文来源:新京葡萄官方网站-www.renewskincarellc.com