Looking for Someone to Champion the Diamond Standard for OpenZeppelin

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.

The Diamond Standard is here: https://github.com/ethereum/EIPs/issues/2535

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.

1 Like

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.


Looking specifically at upgrades, on the roadmap is to move the OpenZeppelin upgrade proxies to OpenZeppelin Contracts.
https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1528

1 Like

Hi @Nick_Mudge! Can you tell us if there’s already projects interested in using the Diamond Standard in production?

1 Like

@frangio Yes, there are projects interested in using the Diamond Standard in production.

Here is a blog post about the Diamond Standard from someone who is using the Diamond Standard in production: Upgradeable smart contracts using the Diamond Standard

The Diamond Standard is hot on Reddit and there are some people in the comments expressing intent to use it: A diamond is a set of contracts that can access the same storage variables and share the same Ethereum address.

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.

1 Like

As promised, here is the new tool to automate contract upgrades using the Diamond Standard: http://joeyzacherl.com/2020/06/diamond-setter-ethereum-smart-contract-manager/

1 Like

Has this been implemented yet? If no, I might be interested in providing an implementation

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.

Various other info about diamonds can be found on my blog: https://dev.to/mudgen