What People Say About EIP-2535 Diamonds
This article is a work in progress.
Aavegotchi
Coderdannn is co-founder of Aavegotchi.
PieDAO
ERC-1155 Multi Token Standard
The ERC-1155 Multi Token Standard suggests using EIP-2535 Diamonds to implement ERC-1155 tokens. EIP-2535 is suggested because it enables an ERC-1155 token implementation to be upgraded without changing the address of the token.
To alleviate the need to emit events when changing contract address, consider using the proxy pattern, such as described in EIP-2535. This will also have the added benefit of providing a stable contract address for users.
ConsenSys Diligence
ConsenSys Diligence suggests using EIP-2535 Diamonds to overcome the maximum contract size limit:
Another, more flexible, way to reduce contract size, while also allowing for parts of the contract to be extended, is the Diamond Standard which is an extension of Transparent Contract Standard. This allows the developer to move parts of the functionality into different deployed contracts, called âfacetsâ of the diamond, and adding these âfacetsâ to the main contract as extensions. This extended functionality uses
delegatecall
to use external runtime bytecode while using the same main storage. A detailed explanation and implementation example is in the official EIP-2535 proposal.
BarnBridge
From BarnBridgeâs blog:
BarnBridge is intent on leading the way in the adoption of new approaches, technologies, and standards that have been proven superior to the general way of doing things. Our BOND staking contract build on the Diamond Standard is called Barn. The contract is complementary to the DAO and the DAO relies on it to read information about voting power. The DAO will have full control over the Diamond used by the Barn which means it can only be upgraded through the proposals accepted by the DAO.
We canât stress enough how excited we are to usher in a Diamond that is controlled by a DAO. This is a massive improvement for UX/UI in the space. The ability for the community to add new functions to a smart contract without having to upgrade the entire framework is a game changer. We are looking forward to how the community uses this new and powerful tool.
DerivaDEX
From DerviaDEXâs blog:
The Diamond Standard is a pattern for upgradeability that overcomes existing limitations around storage and contract size, as well as provides exceptional modularity. We believe that the Diamond Standard will become the de-facto approach to smart contract upgradeability, an area which has not seen extensive improvement in several years.
A âdiamondâ is a contract that gets its external functions from other contracts (called âfacetsâ in the standard). Any number of facets can be added to a diamond. After deployment, the DerivaDEX Diamond contract will have ownership of the DDX token contract, and the governance contract will be added to the diamond as a facet. Thus, additional facets can be added, removed, and modified in the future only via governance. We think this is exciting for several reasons:
Safety & agility. We expect our code to be easier to read, and audit, due to the separation of concerns between different facets. Related to this, we also expect to be able to easily respond to new product requirements by extending functionality quickly and safely via facets.
Community. Our facets will be reusable. Because of how Diamond Storage works, these facets are reusable contracts. We, and other projects, can use existing deployed facets to build new applications â cutting down on the cost and complexity involved in deploying new contracts.
Transparency. The Diamond Standard brings excellent transparency to code used in diamonds and facets, providing a permission-less history of all upgrades and modifications to the attached logic contracts. This is critical for upgradeable contracts, and diamond contracts contain a history of all modifications made over time, as well as clearly describe all functions currently accessible to the diamond.
Gelato Network
We envision Gelato v2 as an ever-changing and improving networked service for developers that will constantly adapt in order to guarantee the automation of transactions in a reliable and efficient manner. Most of the security-related code was externalized into the service contracts and thus services can be assured that even if Gelato is maliciously taken over, their services are safe. For this reason, we choose to implement Gelato v2 using the Diamond Standard, otherwise known as EIP-2535. The upgradable protocol is secured by a multisig controlled by the Gelato Core development team, however, there are already concrete plans to transition this control over to the upcoming GelatoDAO, which will launch in Q2 this year.