v6.0.0 - Diamond Proxy Pattern (ERC-2535)
What's new?
🚨 Breaking changes
The proxy architecture has been migrated from ERC-1538 Transparent Contract Standard to ERC-2535 Diamond Standard.
Impact:
- No changes to on-chain business logic or contract interfaces used by regular clients.
- Existing integrations that interact with contract functions will continue to work without modification.
- Breaking change applies only to how the proxy’s upgrade mechanism works and how contract structure is exposed to indexers, explorers, or tooling that previously relied on ERC-1538’s upgrade API.
💡 Versioning note:
Technically, since public APIs for business logic did not change, this could be a minor release under Semantic Versioning.
However, because the upgrade proxy standard changed and this could impact indexers and tooling, releasing as a major version ensures better visibility of this architectural shift.
❌ Removed functions and events (ERC-1538):
function totalFunctions(...)function functionByIndex(...)function functionById(...)function functionExists(...)function functionSignatures(...)function delegateFunctionSignatures(...)function delegateAddress(...)function delegateAddresses(...)function updateContract(...)event CommitMessage(...)event FunctionUpdate(...)
✨ New functions (ERC-2535)
function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata)function facets() external view returns (Facet[] memory)function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory)function facetAddresses() external view returns (address[] memory)function facetAddress(bytes4 _selector) external view returns (address)event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata)
✍️ Updated contracts
All contracts have been updated (formatting, renaming, …) but no breaking changes
have been introduced to the business logic.
🚀 Deployment & network support
- The PoCo protocol is now available on Arbitrum One Mainnet.
More details
- Update docs and diagrams (#250)
- Deploy on Arbitrum Mainnet (#249)
- Add support for Arbitrum Mainnet (#248)
- Publish NPM package for version
v5.6.0-rc1(#247) - Deploy on Arbitrum Sepolia (#246)
- Set owner at deployment (#245)
- Use lib as storage. (#243)
- Save
IexecLibOrders_v5in config file (#242) - Migrate proxy to Diamond pattern - ERC-2535 (#241):
- Restore compatibility with iExec SDK. (#240)
- Target latest EVM version (#239)
- Adapt contracts file tree (#238)
- Use namespaced storage (#236, #237)
- Fix script folder (#235)
- Format all solidity files (#233)
- Replace ERC1538 wording by diamond Proxy wording (#229, #230, #234)
- Update deployment CI (#228)
- Format contracts (#227)
- Remove ENS module (#225)
- Add Diamond contract unit tests (#224)
- Fix
fallbackandreceive(#223) - Init contracts migration (#222)
Full Changelog: v5.5.1...v6.6.0