如何通过钻石标准解决以太坊合约大小限制?

240阅读 0评论2021-07-08 有看到天上的屋吗
分类:虚拟化

以太坊合约包含太多函数和代码,将会达到合约24KB大小的最大限制。对于某些类型的合约来说,这是一个真正的问题。

一些合约标准需要许多功能。例如,ERC1400安全代币标准需要27个函数和13个事件。ERC-998可组合不可替换代币标准指定了31个函数。通过实现这些标准的其他特定于应用程序的代码合约,可以很容易地超出24KB的限制。

即使不是实现大型标准合约,一些开发人员也会希望开发大型合约,以便将相关代码放在同一个以太坊地址下。而且,如果状态和功能一起保存在同一个以太坊地址下,那么访问和修改合约存储就更容易、更灵活。

怎么办呢?

有人提议增加或取消合约的最大规模限制。但维塔利克.布特林(Vitalik Buterin)出于技术原因反对该协议,并捍卫使用“代理合约”和“委托合约”的做法。代理合约是指通过使用称为“delegatecall”的低层操作通过调用其他合约功能来保持当前合约较小规模的合约。

基于以上分歧,我认为把如何操作进行标准化会是一个好主意。百利好环球bailihaofx.com如何创建代理合约来模拟可能超过24kb大小限制的大型合约。

这就是为什么我制定了钻石标准。标准规范如何去创建一个小合约,这个合约可以像使用当前合约的代码一样使用任何数量的其他合约的代码。

执行钻石标准的合约称为钻石。“钻石”一词用于将钻石与只能从单个合约借用代码的常规合约和代理合约区分开来。

此外,术语“钻石”用来建立一个形象的概念,用于了解其如何工作。真正的钻石有不同的侧面,叫做切面(facet)。可以设想,一个在以太坊钻石合约也有不同的切面。每一个钻石借用功能的合约都是不同的侧面或切面(facet)。

钻石标准使用类比的方式扩展了“钻石切割”的功能 ,用于增加,替换,或删除切面和功能。这类似于给予一个真正的钻石新切面,而是通过合约来切割。

此外,钻石标准提供了称为“放大镜(The Loupe)”的功能,返回关于切面的信息和钻石存在的功能。在钻石行业,“放大镜”是一种用来检查钻石的工具。

钻石标准中定义的新术语与真钻石的类比是一致的。这用于定义和区分钻石和其他类型的合约。不幸的是,新的术语可能会成为一些人学习该标准的障碍。但是新的术语很少,我们在本文中已经介绍了这些新术语。术语是:钻石(diamond),钻石切割(diamondCut),切面(facet)和放大镜(The Loupe)。

上一篇:以太坊2.0的混洗算法是什么?
下一篇:如何在波卡上获得平行链插槽?