I am looking for someone familiar with OpenZeppelin who would be interested in creating OpenZeppelin-based contracts and tools for the Diamond Standard and championing it forward in the OpenZeppelin ecosystem.
Here is a little info about the Diamond Standard:
A diamond is a set of contracts that can access the same storage variables and share the same Ethereum address.
Why use a diamond on Ethereum? Multiple small contracts calling each other increases complexity. A diamond handling its storage and functionality is simpler.
It provides a cohesive way to organize and structure complex contract interaction.
By cohesive I mean that code that is associated with each other should be easy to use together. At the same time the Diamond Standard provides a degree of modularity. It provides this balance that is very useful.
The Diamond Standard also solves a huge technical problem which is the 24KB maximum contract size limit. This limit becomes a problem when you need contract code to access the same storage variables but can't anymore because the contract size has gotten too big. The Diamond Standard enables multiple contracts to access the same storage variables in the same/similar way one large contract could.
A contract architecture that makes upgradeable contracts flexible, unlimited in size, and transparent.
To be clear, this is not a paid role, as there is currently no financial backing for the Diamond Standard. It is for someone who sees the value of the Diamond Standard and has the time, vision, interest and technical expertise to make it more accessible to others via OpenZeppelin.
For EIPs to be added to OpenZeppelin Contracts the preference is for the EIP to be final.
So for any non-final EIP, it may be best to focus on getting the EIP finalized and community adoption. Having a champion for the EIP could really help with this process. An example of this was ERC721.
I know a couple other companies/people that are using it in production or are planning to.
Also, I know someone who is working on a new Python framework for creating Ethereum contracts using the Diamond Standard. I’m told it will be released this week or next week.
Hey @Amxx I’d be happy for whatever you would like to do.
There are currently three different implementations of EIP-2535 Diamond Standard. Information about them are here: https://github.com/mudgen/diamond I would like there to be an implementation for OpenZeppelin.
Some projects are using EIP-2535 Diamond Standard, so more tools, documentation, tutorials, implementations are very welcome and will likely get used.
@Daniel_I We're currently not planning to support Diamond proxies as I explained in #2793:
Our current position on this is that the work required to support diamond proxies is too much for us to take on. It is not only about the initial work to build the Solidity contracts and become confident about their security, but also documentation and other materials, support for the pattern in our Upgrades Plugins and OpenZeppelin Defender, and continued maintenance of all of that going forward. At the moment we're not interested in commiting to all or part of this work.
Hello Frangio. Given the fact that Diamonds are already an ERC and OZ team has embraced some of its concepts for the 5.0.0 upgrade. Are there any other implementations of diamonds features in the future?
I would like to know particularly regarding ERC1967 Proxies since it could make use of the dynamic storage layout diamonds bring to the table to avoid having only one implementation.
Currently there have been some simple implementations such as this one which showcases my point.