A curated list of awesome EIP2535 Diamonds resources, libraries, tools and more.
Please check the contribution guidelines for information on formatting and writing pull requests.
- EIP2535 Diamonds - Standard.
- EIP2535 Diamonds discussion thread - Github issue created to discuss Diamonds.
- Twitter @eip2535 - Twitter handle.
- EIP2535 Blog - Technical articles about diamonds.
- EIP2535 Discord Server - Discord server for discussing EIP2535 Diamonds and related things.
- Diamond reference implementation comparisons - Compares Diamond reference implementations.
- diamond-1-hardhat - Simple Diamond reference implementation.
- diamond-2-hardhat - Gas-optimized Diamond reference implementation.
- diamond-3-hardhat - Simple loupe (introspecting functions) Diamond reference implementation.
- Introduction to EIP-2535 Diamonds - Explains the problem diamonds were initially developed to solve, how they work, how to organize them, and how to deploy and upgrade them.
- Compliance with EIP-2535 Diamonds Standard - How implementations can comply with the standard.
- EIP-2535: A Technical Overview of the Diamond Smart Contract Standard - Overview and tutorial.
- EIP-2535: A standard for organizing and upgrading a modular smart contract system. - Describes what diamonds are, how they work and how to use them.
- Diamond Loupe Functions - Explains the need and use of loupe functions (diamond introspecting functions).
- How to Share Functions Between Facets of a Diamond - Shows ways to share functionality between facets of a diamond.
- A Beginner’s Guide to The Diamond Standard Proxy - Explains EIP-2535 Diamonds.
- Idiots Guide to Using an EIP-2535 Diamond Proxy
- EIP 2535: Diamond standard explained — Part 1: Why diamonds?
- EIP 2535: Diamond standard explained – Part 2: What are diamonds and how they work
- EIP 2535: Diamond standard explained – Part 3: Understanding storage patterns in diamonds
- The Diamond Standard (EIP-2535) Explained: Part 1
- The Diamond Standard (EIP-2535) Explained: Part 2
- A better way to initialize upgradeable contracts - Shows how to execute initialization functions during diamond upgrades.
- An Introduction to ERC2535 Diamonds Development And Why Solidity Devs Should Adopt It
- Transforming web3 through a Diamond Management System
- Achieving Universal and Reusable Smart Contracts via ERC2535 Diamond Proxy Standard
- A guide to building and deploying upgradeable contracts on CELO with Diamond standard
- How to use TypeScript with EIP-2535: Diamonds
- Multiple NFT and ERC-20 tokens backed by a single diamond
- How Diamond Storage Works - Explains diamond storage and shows an example.
- New Storage Layout For Proxy Contracts and Diamonds - First written article that describes diamond storage.
- AppStorage Pattern for State Variables in Solidity - Describes and shows AppStorage.
- Rules for Upgrading Diamond Storage - Best documentation about upgrading Diamond Storage.
- Migrating the EIP-2535 Diamond Storage layout - Shows Diamond Storage and how to migrate data to new Diamond Storage in upgrades.
- Diamond Upgrades - How to perform diamond upgrades.
- Example of Adding New State Variables in Diamond Upgrade - Shows how to add new state variables to a diamond.
- Initializing an EIP-2535 Diamond for deployment and upgrades
- A better way to initialize upgradeable contracts - Shows how to execute initialization functions during diamond upgrades.
- Upgradeable Smart Contracts and Initialization - Compares methods of initializing upgrades.
- 🌱 Beanstalk 🤝 EIP-2535 💎 - Lays out benefits of EIP-2535 with examples from their project.
- Smart Contracts as Apps - EIP-2535 Diamonds and the feasibility of a DAO Operating System
- Dark Forest & the Diamond Standard - Dark Forest project moves to and dicusses diamonds.
- The Diamond Standard: A new paradigm for upgradeability - DerivaDEX on diamonds.
- We like the (EIP-2535) Diamonds - Premia Finance talks about their use of diamonds.
- Why Gotchivault is upgrading to the Diamond standard - How to upgrade an existing proxy contract to EIP2535 Diamonds.
- Handling multiple tokens, with a modern solidity architecture via Diamonds & ERC1155
- Smart contract packages — upgradeability for normal people
- Full course on Diamond Proxy Pattern with code walkthrough
- Ethereum Diamonds - EIP-2535 Multi Facet Proxy
- How to Organize a Diamond with Facets
- Create Diamond Contracts In Your Browser Using Remix And Louper
- Share Functions And Storage With Diamond Contracts | Louper/Remix
- SolidState Solidity - Upgradeable-first Solidity smart contract development library that supports diamonds.
- ERC20 Facet - A facet that adds ERC-20 token functionality to the host contract.
- ERC721A-Upgradeable - Gas efficient ERC721 implementation.
- ERC1155-DiamondStorage - ERC1155 Implementation
- OpenZeppelin Diamonds - OpenZeppelin contracts transpiled to use Diamonds & Facets
- Louper - The Ethereum Diamond Inspector - User interface for diamonds.
- DiamondScan - User inteface for diamonds.
- Governance Diamonds - User interface for exploring diamonds.
- diamond-etherscan - Make your EIP-2535 Diamond etherscan compatible.
- Diamantair - Deploying new diamonds from a template.
- diamond-2-hardhat-v6 - diamond-2-hardhat using TypeScript and Hardhat with Ethers v6.
- diamond-hardhat - Extension that adds deeper Hardhat integrations for faster/more maintainable ERC2535 Diamond contract development.
- hardhat-diamond-abi - Hardhat plugin to combine multiple ABIs into a Diamond ABI artifact.
- hardhat-deploy - Hardhat plugin that supports deploying, upgrading and managing diamonds.
- Zem - Hardhat deployment management system that supports deploying, upgrading and managing diamonds.
- diamond-foundry - A modern framework for creating EIP2535 Diamonds.
- Foundry-Hardhat-Diamonds - Mimimal template for Diamonds.
- foundry-diamond-deploy - Minimal example of a Diamond deployment script using foundry.
- Diamond-Foundry - Foundry version of Diamond Pattern (EIP-2535) reference implementation.
- Foundry template for diamond-3
- gemforge - Command-line tool for building, deploying and upgrading Diamond Standard contracts on EVM chains.
- louper-cli - Command-line tool for Louper.dev
- 0xpm - Diamond-based smart contract package manager.
- Ethereum Package Manager - GUI to deploy and upgrade Diamond proxies and facets. Granular facet control with ability to toggle facet functions on/off.
- Inspector Facet - Inspection utility for EIP2535 Diamond proxies. Written in Python.
- diamond-diff - Tool that helps retrieve the necessary
diamondCut
by checking against a Diamond model.
- OpenZeppelin Transpiler for Diamonds - Updated OpenZeppelin Transpiler supporting Diamond patter with significant speed improvements
Note that some changes have been made to the Diamond reference implementations since the following audits have been done.
-
Smart Contract Audit - Omniscia published a smart contract audit of the diamond implementing AllianceBlock’s token bridge, which uses the diamond-3 implementation.
-
Smart Contract Audit - Omniscia published a smart contract audit of the Seen.Haus Marketplace Diamond, which uses the diamond-3 implementation, modified for role-based access rather than single-owner.
- Smart Contract Audit - Certik published a smart contract audit of Aavegotchi’s core diamond which use the diamond-3 implementation.
- Smart Contract Audit - Certik published a smart contract audit of DOTC’s diamond.
-
Smart Contract Audit - Quantstamp published a smart contract audit of Aavegotchi’s staking diamond which used the diamond-2 implementation.
-
Smart Contract Audit - Quantstamp published a smart contract audit of BarnBridge’s Barn diamond, which uses BarnBridge’s own implementation of EIP-2535 Diamonds based on diamond-1.
-
Smart Contract Audit - Quantstamp published a smart contract audit of DerivaDEX’s governance diamond, which uses the diamond-3 implementation.
- Smart Contract Audit - MixBytes published a smart contract audit of PieDAO’s ExperiPie diamond, which uses the diamond-2 implementation.
- Smart Contract Audit - Haechi Audit published a smart contract audit of BarnBridge’s Barn diamond, which uses BarnBridge’s own implementation of EIP-2535 Diamonds based on diamond-1.
- DerivaDEX
- BarnBridge
- Aavegotchi
- ERC721A-Upgradeable
- PieDAO
- Boson Protocol
- hardhat-deploy
- Nifty Cannon
- AllianceBlock
- Louper
- solidstate-solidity
- Nayms
- Diamond Setter
- Sherlock
- Premia Finance
- Nocturnal Finance
- scaffold-eth
- diamond-starter-kit
- scaffold-eth-diamond-standard
- Sanshu Inu
- Gelato Network
- Teller Finance
- seen.haus
- thx.network
- Token Gallery
- Beanstalk Protocol
- kanaloa.network
- PoolSharks
- Bitpixel
- neodymium-contracts
- INU Token
- Sigmadex
- TuffToken
- hardhat-diamond-abi
- EnterDAO
- Gemcutter
- GNUS.AI
- Dark Forest
- Moonstream DAO
- Chain of Empires
- LI.FI
- cryptopoopz.com
- Copium Wars
- Typenauts
- connext.network
- The Saudis
- Spring Game
- oncyber
- Avathereum
- Cartesi
- Energy Web
- Shattered Eon
- Zem
- SolarProtocol
- VOID.MONEY
- Simple DeFi
- CroSwap
- Lightm
- PartyFinance
- 1o1.art
- withmantra.com
- Nobility Token
- meTokens
- Fyde Treasury Protocol
- VaporFi
- MetaMask Grants DAO
- zkSync
- Crypto Unicorns
- Forward Protocol
- Ubiquity Dollar
- Geo Web
- Nexera ID
- CronosNode NFTs
- Tombala Games
- Perp88
- Helix2
- Pendle
- Worker Node Toolkit
- NiftyKit
- Babylon
- Autify Network
- Keepers
- MetaBase
- props
- VL Relics
- ApeFathers NFT
- ssv.network
- Pinjam
- Venus Protocol
- OmniKingdoms
- ZKasino
- FrenPet
- Citizen Capital
- basedVC
- Rico Credit System
- GEMPAD
- Kresko Protocol
- untrading
- Enzo Racing
- Trust Wallet
- KingPinOnBase
- Parallel
- JungleArt
- Owl Protocol
- Vaultus Finance
- zkLink
- OctoDeFi
- RAIRprotocol
- kewl
- Mande Network
- FeverTokens
- Pantos
- Amplified
- RangoExchange
- Flare Networks
- BoomBots