Welcome to info.diamonds, an unofficial documentation site for Diamonds, the Multi-Facet Proxy (EIP 2535).
- Diamond Overview
- Linked EIP in header
- Added Overview section with background
- Revised information
- Proxy Types - renamed
- Revised information
- Added Transparent and UUPS
- Included EIP links
- Diamond(Multi-Facet Proxy) - renamed
- Moved Iframe learning tool
- Revised information
- Added code examples
- Fallback Function
- Delegate Call
- Diamond Cut
- Diamond Loupe
- Storage Options - renamed
- Revised Information
- Diamond Workflow - renamed
- Diamond Tutorials
- Diamond Practice
- Diamond Security
- Diamond Overview
- Organized paragraph layout
- Added headers to sub-sections
- Proxies
- Revised proxy examples and definitions
- Added Transparent and UUPs
- Included new diagrams
- Diamond Pattern
- added Iframe learning tool
- added diagram of multi-facet proxy
- revised sub-sections to include code (fallback function)
- Resources
- added Awesome Diamonds from Nick Mudge Github
- re-formatted section
- Security Considerations
- Diamond Projects
- 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.
- 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.
- 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.
- A better way to initialize upgradeable contracts - Shows how to execute initialization functions during diamond 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
- Aavegotchi Smart Contract Documentation
- 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
- diamond-hardhat - Extension that adds deeper Hardhat integrations for faster/more maintainable ERC2535 Diamond contract development.
- Louper - The Ethereum Diamond Inspector - User interface for diamonds.
- 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.
- Inspector Facet - Inspection utility for EIP2535 Diamond proxies. Written in Python.
- Zem - Hardhat deployment management system that supports deploying, upgrading and managing 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.
- 0xpm - Diamond-based smart contract package manager.
- diamond-etherscan - Make your EIP-2535 Diamond etherscan compatible.
- Diamantair - Deploying new diamonds from a template.
- diamond-diff - Tool that helps retrieve the necessary
diamondCutby checking against a Diamond model. - Ethereum Package Manager - GUI to deploy and upgrade Diamond proxies and facets. Granular facet control with ability to toggle facet functions on/off.
-
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.