Skip to content

Releases: iExecBlockchainComputing/PoCo

v6.0.0 - Diamond Proxy Pattern (ERC-2535)

14 Aug 13:31
af14640
Compare
Choose a tag to compare

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 and receive (#223)
    • Init contracts migration (#222)

Full Changelog: v5.5.1...v6.6.0

v5.5.1 - Fresh development environment

21 May 16:56
57b7774
Compare
Choose a tag to compare

ℹ️ 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 in contribute(...) function. (#168)
  • Remove unnecessary back and forth transfers in IexecPoco2Delegate happening during claim(..). (#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

07 Oct 16:11
4821374
Compare
Choose a tag to compare

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 in IexecPoco and IexecOrderManagement 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:
  • 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 expose ComputeDealVolume 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
  • Change MNEMONIC var name for production & clean Hardhat file. (#53)
  • Format files & update copyright notices:
    • DelegateBase, IexecERC20Core (#64)
    • PoCo2 contracts (#54)
    • PoCo1 contracts (#52)
    • Order Management contract (#83)
  • 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.
  • 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 use ethers. Remove now useless eth-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 use ethers.
  • 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

24 Jan 16:31
2ad1ce7
Compare
Choose a tag to compare

The PoCo rocket is on the launch pad

23 May 11:44
86ec976
Compare
Choose a tag to compare
Pre-release

Tag for the final audit report chain security

catagories config choice

24 Apr 13:53
Compare
Choose a tag to compare
Pre-release
v1.0.12

config/categories.json choice for V2 launch

add License: Apache2.0

13 Apr 08:57
Compare
Choose a tag to compare
Pre-release
v1.0.11

add LICENSE License: Apache2.0

How to please sarmenta

12 Apr 21:52
Compare
Choose a tag to compare
Pre-release

deployed on ropsten, rinkeby, kovan

External Audit Launch

12 Apr 19:39
Compare
Choose a tag to compare
External Audit Launch Pre-release
Pre-release

v1.0.9 also deployed on rinkeby, kovan, ropsten see adresses in ./build/contracts/*.json

PoCo before clean for audit

12 Apr 12:56
Compare
Choose a tag to compare
Pre-release
v1.0.8

fix gas test