当有太多函数和代码时,以太坊合约可能会达到24KB的最大合约大小限制,EIP-2535(Diamond Standard)帮助解决这个问题!

该标准的制定者Nick Mudge在7月10日的博客文章中透露,尽管Vitalik Buterin坚持使用“代理合约”(指可以通过调用其他合约的功能来保持较小的合约)可能是解决这些限制的潜在方法,但他创建的标准化代理合约“钻石标准”可能是锦上添花。

根据Mudge的说法,EIP-2535钻石标准可以标准化程序员如何从任意数量的合约中创建小合约调用功能。实施钻石标准的合约称为钻石,以区别于常规合约和代理合约。

除了具有许多不同的方面和功能之外,钻石标准还具有灵活而透明的创建可升级钻石的方法。

所有如果你还在为ERC-1155合约的升级问题而烦恼,那么赶快了解下EIP-2535,因为就连ERC-1155标准也在它的升级部分,采用了EIP-2353……并且它还说:

为了减轻在更改合同地址时发出事件的需要,请考虑使用EIP-2535中所述的代理模式。 这还将具有为用户提供稳定的合同地址的额外好处。

还有,ERC-1155的作者Ronan Sandford已经在为EIP-2535开发工具:https://twitter.com/wighawag/status/1280992800545349644

EIP-2535简介

一个钻石是一组可以访问相同的存储变量并共享相同的以太坊地址的合约。

一个合约体系结构使得合约的升级变得更加灵活,突破合约大小限制,并且保持透明性。

既然能够减小合约,那么就能够优化Dapp(部分功能)的gas手续费!具有方法,请阅读Diamond Standard Reference Implementation

摘要

一个钻石是一个代理合约,它支持同时使用多个逻辑或代理合约(delegate contrac)。在该标准中,逻辑或代理合约一词是多方面的。 我们知道真正的钻石可以有很多面。使用哪一面取决于调用哪个函数。每个方面都提供一个或多个函数。

一个钻石可以提供:

  • 一种自动添加、替换和删除多个函数的方法(在同一transaction即事务中)。
  • 一个显示添加、替换和删除了哪些函数的事件。
  • 一种查看钻石以了解其函数的方法。
  • 解决24KB最大合约大小限制。钻石可以是任意大小。
  • 根据需要以及在需要时启用零,部分或全部钻石不变性。
  • 专为工具和用户界面软件而设计。

EIP2535 钻石标准解读

这是自然道布道者谭粤飞老师的解读

其它进阶阅读

  1. Understanding Diamonds on Ethereum
  2. Ethereum's Maximum Contract Size Limit is Solved with the Diamond Standard
  3. Solidity Storage Layout For Proxy Contracts and Diamonds
  4. New Storage Layout For Proxy Contracts and Diamonds
  5. Diamond Setter
  6. Upgradeable smart contracts using the Diamond Standard
  7. buidler-deploy supports diamonds
  8. 制定了避免以太坊合约规模限制的新标准

 

如有您有任何问题,欢迎在这里交流。

或者直接联系作者:

  • https://twitter.com/mudgen
  • 该 Email 地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
Log in to comment


User_4ac被盗的头像
User_4ac被盗 提案回复: #54 1 个月 3 周 前
推荐给HackDAO的参赛者 :)