Releases: iExecBlockchainComputing/PoCo
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_v5
in 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
fallback
andreceive
(#223) - Init contracts migration (#222)
Full Changelog: v5.5.1...v6.6.0
v5.5.1 - Fresh development environment
ℹ️ This release is primarily focused on updating the project (Ethers, Typescript, CI, etc.) and is not intended for deployment. Minor contract optimizations included here will be deployed in the next release.
What's new?
- Add some small optimizations to
IexecPoco2Delegate
contract (#167, #168). - Add support for CreateX factory.
- Migrate to Ethers v6.
- Migrate all Javascript files to Typescript.
- Purge Truffle.
- Migrate CI from Jenkins to Github Actions.
Updated contracts
-
IexecPoco2Delegate.sol
More details
- Release v5.5.1 #220
- Add gitub action workflow for deployment (#218)
- Rename Avalanche Fuji and Arbitrum Sepolia network configuration (#217)
- Deploy on new testnet chains using CreateX factory (#216)
- Add CreateX factory for new chain deployment (#215)
- Add Github Action CI in order to publish NPM package (#214)
- Housekeeping (#208)
- Add Halborn "Poco v5.5 & Voucher v1.0" audit report (#205)
- Refactor Factory deployer (#206)
- Enable native tests on CI (#204)
- Migrate to Ethers v6:
- Deployment scripts (#187, #203)
- Tests
- IexecEscrow (#199)
- ENSIntegration, IexecOrderManagement, IexecRelay (#195, #199)
- IexecCategoryManager, IexecERC20 (#192, #199, #202)
- test/fullchain (#190, #196)
- IexecAccessors, IexecMaintenance (#189, #191, #199)
- IexecPoco (#196)
trust
specific field (#201)- IexecPocoBoost (#198)
- fixed a minor issue in BigInt for IexecWrapper (#202).
- Migrate scripts to TypeScript: (#184)
getFunctionSignatures.js
,common-test-snapshot.js
,test-storage.js
,timelock.js
- Migrated utility files to TypeScript : (#183)
FactoryDeployer.js
,constants.js
,odb-tools.js
- Removed deprecated
scripts/ens/sidechain.js
- Purge Truffle leftovers (#180, #181, #182, #185, #186)
- Sunset Jenkins pipeline (#178)
- Re-use variable in
IexecPoco2Delegate
incontribute(...)
function. (#168) - Remove unnecessary back and forth transfers in
IexecPoco2Delegate
happening duringclaim(..)
. (#167) - Remove references to blockscout v5. (#161)
- Migrate integration test files to Typescript & Hardhat:
- 000_fullchain.js (#156, #157)
- 00X_fullchain-Xworkers.js (#158, #159)
- 000_fullchain-5workers-1error.js (#160, #162)
- Clean ToDo (#163)
- 200_fullchain-bot.js (#164, #166)
- 201_fullchain-bot-dualPool.js (#171, #172)
- Fix balance checks in integration tests (#165)
- 300_fullchain-reopen.js (#170, #173)
- 000_fullchain-ABILegacy.js (#174, #175)
- 400_contributeAndCallback.js (#176, #177)
- Remove
smock
from unit tests: - Migrate unit test files to Typescript & Hardhat:
v5.5.0 - Deal sponsoring
What's new?
- Added the ability to sponsor a deal for a requester via the new
sponsorMatchOrders(..)
function.- contracts implementation ✍️
- deployment on iExec Bellecour network 🚀
- Initialized « boost » mode to improve deal throughput
- contracts implementation ✍️
More details
- Include
IexecOrderManagement
module in Poco sponsoring upgrade. (#132) - Update function visibilities to
external
inIexecPoco
andIexecOrderManagement
modules. (#131) - Fix configs native and token. (#129)
- Bump dependencies: (#127)
@openzeppelin/hardhat-upgrades
,hardhat-dependency-compiler
,web3
,
prettier
,zx
, and others [minor/patch version bump]prettier-plugin-organize-imports@4
- Clean some TODOs and harmonize unit tests. (#123)
- Add
set-callback-gas.ts
script. (#121) - Accept any signature format in
SignatureVerifier.v8
when the account is a smart contract. (#120) - Update UML class diagrams. (#112)
- Generate Solidity documentation. (#111)
- Migrate unit test files to Typescript & Hardhat:
- Resources (#125, #126)
- Registries (#122, #124)
- IexecPoco2
- IexecPoco1 (#107, #113, #115, #116)
- Add
.test
suffix to unit test files (#106) - ENSIntegration (#105)
- IexecOrderManagement (#101, #102, #103, #104)
- IexecMaintenance (#100)
- IexecEscrowNative (#99)
- IexecERC20 (#98)
- IexecCategoryManager (#97)
- IexecAccessors (#96)
- Wait for transactions occurring during deployment. (#95)
- Deploy and configure ENS with hardhat. (#93)
- Fix contribute & finalize with callbacks. (#92)
- Deploy Poco sponsoring on local fork of Bellecour. (#91)
- Create slither smart contract entry point and run slither analysis on new contracts. (#87)
- Upgrade to
@openzeppelin/[email protected]
and upgrade other dependencies. (#86) - Deploy IexecPocoAccessorsDelegate module. (#85)
- Create
_computeDealVolume
and exposeComputeDealVolume
functions (#82) - Upgrade Order Management to solidity
^0.8.0
. (#84) - Resolve naming conflict in accessors. (#81)
- Refund sponsor on
claimBoost
. (#80) - Seize sponsor on success task. (#79)
- Refund sponsor on
claim
. (#77) - Sponsor match orders boost. (#67, #78)
- Migrate to hardhat tests related to:
- Upgrade Poco2 to solidity v0.8 . (#63)
- Use common helpers in Poco Boost integration tests. (#62)
- Upload coverage reports to Codecov. (#61)
- Deploy contracts in tests explicitly with hardhat or truffle fixture. (#59)
- Add the ability to deploy without truffle fixture. (#58)
- Sponsor match orders. (#57, #60)
- Upgrade Poco1 to solidity
^0.8.0
(#55):- Migrate to
openzeppelin@v5
- Migrate to
SignatureVerifier.v8
- Migrate to
- Change MNEMONIC var name for production & clean Hardhat file. (#53)
- Format files & update copyright notices:
- Remove enterprise mode. (#51, #56)
- Add PoCo Boost modules to a timelock controlled proxy.
- Add IexecEscrow.v8 tests and developer notices.
- Add tests around callback feature verifying interests of actors are guaranteed.
- Reformat JS files.
- Create a hardhat network close to the iExec Bellecour blockchain.
- Merge settings and v8Settings using object spread.
- Remove useless files.
- Add Slither config. Run single contract Slither analysis on CI.
- Make Poco Boost ITs runnable with "native" mode.
- Migrate puml2links.sh to zx.
- Update copyright and license notices.
- Introduce zx for task scripting.
- Compile latest contracts with 0.8.21.
- Use a single 0.8.19 solidity version to compile latest contracts.
- Fix prettier solidity plugin resolution.
- Remove patched test helpers.
- Clean poco-chain files.
- Bump dependencies.
- Check balance in transfer operation.
- Reformat tests.
- Reformat contracts.
- Add mocha to use test explorer.
- Refactor tests.
- Add dedicated Poco Boost accessors.
- Implement
claimBoost
:- Refund requester.
- Seize workerpool and reward kitty.
- Implement
pushResultBoost
:- Verify task exists.
- Push result before deadline.
- Require enclave challenge when TEE bit of tag set.
- Verify signatures
- scheduler
- enclave
- tee broker
- Reward worker.
- Reward app provider.
- Reward dataset provider.
- Unlock scheduler stake.
- Reward scheduler.
- Handle callback.
- Implement
matchOrdersBoost
:- Verify compatibility of orders
- trust
- category
- price
- tag
- restrictions
- Assets or requester belong to groups in ERC734 identity contract.
- Verify entries are registered & category exists.
- Verify signatures or presignatures of orders.
- ERC1271 contracts can be signers of orders. - Compute volume & consume orders.
- Lock requester deal value.
- Store deal.
- Emit events.
- Lock scheduler stake.
- Return
dealId
. - Reduce gas footprint:
- Remove beneficiary from deal storage.
- Reduce Boost deal storage from 6 to 5 slots.
- Reduce gas consumption on
lock()
calls. - Cache addresses of assets and requester from arguments.
- Init local vars and cache order category.
- Optimize deal storing by slot.
- Change local structure for local variables.
- Store in variable if read multiple times.
- Group
hasDataset
block.
- Remove useless variable.
- Verify compatibility of orders
- Update prettier rules and reformat.
- Migrate
IexecPocoBoost
linking to hardhat deploy script. - Clean files related to docker build of a test blockchain.
- Run automatically before commit a prettier on
.ts
and.sol
staged files. - Upgrade
eth_signTypedData
function to useethers
. Remove now uselesseth-sig-util
. - Init Boost deal structure.
- Publish coverage report on CI/CD. Refactor Jenkinsfile.
- Deploy Nominal and Boost modules with Hardhat.
- Upgrade
hashStruct
function to useethers
. - Add Boost module.
- Add interfaces.
- Add
Store
contract compatible with solidity^0.8.0
. - Update documentation:
- Generate class diagrams from solidity contracts.
- Add task and contribution state diagrams.
- Add boost workflow sequence diagram. Update nominal workflow sequence diagram.
- Update TEE workflow sequence diagram.
- Update actors diagram.
- Rename UMLs.md file to standard README.md.
- Add inline solidity documentation.
- Update class diagrams.
- Create folder docs that contains all documentation material.
- Migrate to Hardhat:
- Init Hardhat project.
- Migrate unit tests with
@nomiclabs/hardhat-truffle5
. - Fetch
@iexec/[email protected]
from default public registry. - Migrate tests coverage with solidity-coverage of
@nomicfoundation/hardhat-toolbox
.
V2 smart contracts deployed on mainnet
The PoCo rocket is on the launch pad
Tag for the final audit report chain security
catagories config choice
v1.0.12 config/categories.json choice for V2 launch
add License: Apache2.0
v1.0.11 add LICENSE License: Apache2.0
How to please sarmenta
deployed on ropsten, rinkeby, kovan
External Audit Launch
v1.0.9 also deployed on rinkeby, kovan, ropsten see adresses in ./build/contracts/*.json
PoCo before clean for audit
v1.0.8 fix gas test