diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fa6143cd..b6dad2a7 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -12,8 +12,8 @@ concurrency:
cancel-in-progress: true
jobs:
-# TODO extract common steps into reusable workflows to resolve
-# concurrency issue.
+ # TODO extract common steps into reusable workflows to resolve
+ # concurrency issue.
build-and-test:
runs-on: ubuntu-latest
steps:
diff --git a/.mocharc.json b/.mocharc.json
index 294f8494..8c5c4ad7 100644
--- a/.mocharc.json
+++ b/.mocharc.json
@@ -1,5 +1,5 @@
{
- "require": "hardhat/register",
- "timeout": 40000,
- "_": ["test/**/*.test.ts"]
+ "require": "hardhat/register",
+ "timeout": 40000,
+ "_": ["test/**/*.test.ts"]
}
diff --git a/.prettierrc b/.prettierrc
index 53d3c142..0d94ca51 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -4,26 +4,23 @@
"tabWidth": 4,
"trailingComma": "all",
"endOfLine": "auto",
- "plugins": [
- "prettier-plugin-organize-imports",
- "prettier-plugin-solidity"
- ],
+ "plugins": ["prettier-plugin-organize-imports", "prettier-plugin-solidity"],
"pluginsComments": {
"prettier-plugin-organize-import": "Supports .ts files (not .sol)",
"prettier-plugin-solidity": "Does not support imports sorting yet. See prettier-solidity/prettier-plugin-solidity#918"
},
"overrides": [
{
- "files": "*.sol",
- "options": {
+ "files": "*.sol",
+ "options": {
"singleQuote": false
}
},
{
- "files": ["**/*.json", "**/*.yml"],
- "options": {
+ "files": ["**/*.json", "**/*.yml"],
+ "options": {
"tabWidth": 2
}
}
- ]
+ ]
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 77ae3b21..8c7b1139 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,12 +7,14 @@
### What's new?
#### π¨ Breaking changes
+
The proxy architecture has been migrated from [ERC-1538 Transparent Contract Standard](https://eips.ethereum.org/EIPS/eip-1538) to [ERC-2535 Diamond Standard](https://eips.ethereum.org/EIPS/eip-2535).
> **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.
+>
+> - **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.
@@ -20,326 +22,328 @@ However, because the upgrade proxy standard changed and this could impact **inde
##### β 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(...)`
+- `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)`
+- `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**.
+
+- 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)
+- 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)
## v5.5.1 - Fresh development environment
### 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.
+- 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
-- [x] `IexecPoco2Delegate.sol`
+- [x] `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:
- - IexecEscrow.v8 (#154, #155)
- - IexecPocoDelegate (#149, #151)
- - IexecPocoBoost (#148, #150, #153)
-- Migrate unit test files to Typescript & Hardhat:
- - ERC1154 (#145, #146, #147, #152)
- - IexecEscrowToken (#141, #143)
- - IexecRelay (#140)
- - IexecPoco1 (#136, #137)
- - IexecPoco2
- - kitty (#142, #144)
- - reopen (#135)
+- 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:
+ - IexecEscrow.v8 (#154, #155)
+ - IexecPocoDelegate (#149, #151)
+ - IexecPocoBoost (#148, #150, #153)
+- Migrate unit test files to Typescript & Hardhat:
+ - ERC1154 (#145, #146, #147, #152)
+ - IexecEscrowToken (#141, #143)
+ - IexecRelay (#140)
+ - IexecPoco1 (#136, #137)
+ - IexecPoco2
+ - kitty (#142, #144)
+ - reopen (#135)
## 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 βοΈ
+- 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`,
+- 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:
- - Resources (#125, #126)
- - Registries (#122, #124)
- - IexecPoco2
- - reopen (#133)
- - finalize (#79, #117, #119)
- - reveal (#114, #118)
- - contribute (#108, #109, #110)
- - 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](./scripts/sponsoring/README.md). (#91)
-- Create slither smart contract entry point and run slither analysis on new contracts. (#87)
-- Upgrade to `@openzeppelin/contracts@5.0.2` 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:
- - `initialize` (#74, #75)
- - `claim` (#65, #66, #72, #76)
-- 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/solidity@0.1.1` from default public registry.
- - Migrate tests coverage with [solidity-coverage](https://github.com/sc-forks/solidity-coverage) of `@nomicfoundation/hardhat-toolbox`.
+ - `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
+ - reopen (#133)
+ - finalize (#79, #117, #119)
+ - reveal (#114, #118)
+ - contribute (#108, #109, #110)
+ - 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](./scripts/sponsoring/README.md). (#91)
+- Create slither smart contract entry point and run slither analysis on new contracts. (#87)
+- Upgrade to `@openzeppelin/contracts@5.0.2` 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:
+ - `initialize` (#74, #75)
+ - `claim` (#65, #66, #72, #76)
+- 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/solidity@0.1.1` from default public registry.
+ - Migrate tests coverage with [solidity-coverage](https://github.com/sc-forks/solidity-coverage) of `@nomicfoundation/hardhat-toolbox`.
## v5.4.2
-- Use latest Nethermind base image `nethermindeth/nethermind:iexec`
-(saved internally at `nexus.intra.iex.ec/nethermind:1.18.x-0`)
-containing a fix for [#5506](https://github.com/NethermindEth/nethermind/issues/5506).
+- Use latest Nethermind base image `nethermindeth/nethermind:iexec`
+ (saved internally at `nexus.intra.iex.ec/nethermind:1.18.x-0`)
+ containing a fix for [#5506](https://github.com/NethermindEth/nethermind/issues/5506).
## v5.4.1
-- Fix default `poco-chain` `CMD`. (#127)
+- Fix default `poco-chain` `CMD`. (#127)
## v5.3.2
-- remove EIP 1559 for native testchains
-- drop testchain ganache 1s builds in favor of custom cmd (use `--miner.blockTime 1`)
-- add FIFS ens domains in testchains migrations
+- remove EIP 1559 for native testchains
+- drop testchain ganache 1s builds in favor of custom cmd (use `--miner.blockTime 1`)
+- add FIFS ens domains in testchains migrations
## v5.3.1
-- updated dev deps
-- migrated from parity to openethereum
-- upgraded ganache from v6 to v7
-- updating testchains to support london and arrow-glacier hardforks
+- updated dev deps
+- migrated from parity to openethereum
+- upgraded ganache from v6 to v7
+- updating testchains to support london and arrow-glacier hardforks
## v5.3.0
-- added iExec enterprise
+- added iExec enterprise
diff --git a/README.md b/README.md
index 83466dae..bb913ca7 100644
--- a/README.md
+++ b/README.md
@@ -9,30 +9,31 @@ This repository contains the smart contract implementation of iExec's Proof of C
### Related articles
-- [PoCo Series #1 β About Trust and Agents Incentives](https://medium.com/iex-ec/about-trust-and-agents-incentives-4651c138974c)
-- [PoCo Series #2 β On the use of staking to prevent attacks](https://medium.com/iex-ec/poco-series-2-on-the-use-of-staking-to-prevent-attacks-2a5c700558bd)
-- [PoCo Series #3 β PoCo protocol update](https://medium.com/iex-ec/poco-series-3-poco-protocole-update-a2c8f8f30126)
-- [PoCo Series #4 β Enclaves and Trusted Executions](https://medium.com/iex-ec/poco-series-4-sgx-enclaves-and-trusted-executions-6f2ebed8d4fa)
-- [PoCo Series #5 β Open decentralized brokering on the iExec platform](https://medium.com/iex-ec/poco-series-5-open-decentralized-brokering-on-the-iexec-platform-67b266e330d8)
-- [PoCo Series #6 β Smart Contract Upgradeability and Governance](https://medium.com/iex-ec/poco-series-6-smart-contract-upgradeability-and-governance-68d2cdecd120)
-- [PoCo Series #8 β Future-proofing iExec - Smart Contract Interoperability and Modularity](https://medium.com/iex-ec/poco-series-8-future-proofing-iexec-smart-contract-interoperability-and-modularity-37a3d3613f11)
-- [iExec PoCo v6 β Building the diamond foundation](https://www.iex.ec/news/iexec-poco-v6-building-the-diamond-foundation)
+- [PoCo Series #1 β About Trust and Agents Incentives](https://medium.com/iex-ec/about-trust-and-agents-incentives-4651c138974c)
+- [PoCo Series #2 β On the use of staking to prevent attacks](https://medium.com/iex-ec/poco-series-2-on-the-use-of-staking-to-prevent-attacks-2a5c700558bd)
+- [PoCo Series #3 β PoCo protocol update](https://medium.com/iex-ec/poco-series-3-poco-protocole-update-a2c8f8f30126)
+- [PoCo Series #4 β Enclaves and Trusted Executions](https://medium.com/iex-ec/poco-series-4-sgx-enclaves-and-trusted-executions-6f2ebed8d4fa)
+- [PoCo Series #5 β Open decentralized brokering on the iExec platform](https://medium.com/iex-ec/poco-series-5-open-decentralized-brokering-on-the-iexec-platform-67b266e330d8)
+- [PoCo Series #6 β Smart Contract Upgradeability and Governance](https://medium.com/iex-ec/poco-series-6-smart-contract-upgradeability-and-governance-68d2cdecd120)
+- [PoCo Series #8 β Future-proofing iExec - Smart Contract Interoperability and Modularity](https://medium.com/iex-ec/poco-series-8-future-proofing-iexec-smart-contract-interoperability-and-modularity-37a3d3613f11)
+- [iExec PoCo v6 β Building the diamond foundation](https://www.iex.ec/news/iexec-poco-v6-building-the-diamond-foundation)
## Documentation
-- [iExec technical documentation](https://docs.iex.ec/)
-- [Protocol specific documentation](https://docs.iex.ec/protocol/proof-of-contribution)
-- [Solidity contracts API](./docs/README.md#solidity-contracts-api)
-- [Technical README](./docs/README.md)
+- [iExec technical documentation](https://docs.iex.ec/)
+- [Protocol specific documentation](https://docs.iex.ec/protocol/proof-of-contribution)
+- [Solidity contracts API](./docs/README.md#solidity-contracts-api)
+- [Technical README](./docs/README.md)
## Resources
-- **NPM Package**: [@iexec/poco](https://www.npmjs.com/package/@iexec/poco) includes all smart contract source code, ABIs, and deployment artifacts.
-- **ABIs**: available in the `abis/` directory of this repository and the published NPM package.
+
+- **NPM Package**: [@iexec/poco](https://www.npmjs.com/package/@iexec/poco) includes all smart contract source code, ABIs, and deployment artifacts.
+- **ABIs**: available in the `abis/` directory of this repository and the published NPM package.
Note: β οΈ `artifacts/` folder is deprecated and will be removed in future versions.
-- **Deployment addresses**: available in the `deployments/` folder of this repository and the published NPM package.
-- **Subgraph**: the Subgraph indexing Arbitrum deployments is available on [The Graph Explorer](https://thegraph.com/explorer/):
- - [Arbitrum Mainnet](https://thegraph.com/explorer/subgraphs/B1comLe9SANBLrjdnoNTJSubbeC7cY7EoNu6zD82HeKy?view=Query&chain=arbitrum-one)
- - [Arbitrum Sepolia Testnet](https://thegraph.com/explorer/subgraphs/2GCj8gzLCihsiEDq8cYvC5nUgK6VfwZ6hm3Wj8A3kcxz?view=Query&chain=arbitrum-one)
+- **Deployment addresses**: available in the `deployments/` folder of this repository and the published NPM package.
+- **Subgraph**: the Subgraph indexing Arbitrum deployments is available on [The Graph Explorer](https://thegraph.com/explorer/):
+ - [Arbitrum Mainnet](https://thegraph.com/explorer/subgraphs/B1comLe9SANBLrjdnoNTJSubbeC7cY7EoNu6zD82HeKy?view=Query&chain=arbitrum-one)
+ - [Arbitrum Sepolia Testnet](https://thegraph.com/explorer/subgraphs/2GCj8gzLCihsiEDq8cYvC5nUgK6VfwZ6hm3Wj8A3kcxz?view=Query&chain=arbitrum-one)
## Audits
diff --git a/contracts/IexecInterfaceNative.sol b/contracts/IexecInterfaceNative.sol
index 7ccd1990..4df5f3db 100644
--- a/contracts/IexecInterfaceNative.sol
+++ b/contracts/IexecInterfaceNative.sol
@@ -25,9 +25,9 @@ import {IOwnable} from "./interfaces/IOwnable.sol";
* @dev Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`.
* Changing the name or the path would cause a breaking change in the SDK.
*/
+// TODO Remove legacy interface `IexecAccessorsABILegacy` when
+// IexecInterfaceToken is removed.
interface IexecInterfaceNative is
- // TODO Remove this legacy interface when
- // IexecInterfaceToken is removed.
IexecAccessorsABILegacy,
IexecCategoryManager,
IexecConfiguration,
diff --git a/contracts/IexecInterfaceToken.sol b/contracts/IexecInterfaceToken.sol
index 2865622d..3c362879 100644
--- a/contracts/IexecInterfaceToken.sol
+++ b/contracts/IexecInterfaceToken.sol
@@ -28,9 +28,9 @@ import {IOwnable} from "./interfaces/IOwnable.sol";
* @dev Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`.
* Changing the name or the path would cause a breaking change in the SDK.
*/
+// TODO Remove the interface `IexecAccessorsABILegacy` when it's not used in the middleware anymore.
+// https://github.com/iExecBlockchainComputing/iexec-commons-poco/blob/819cd008/generateContractWrappers#L7
interface IexecInterfaceToken is
- // TODO Remove this interface when it's not used in the middelware anymore.
- // https://github.com/iExecBlockchainComputing/iexec-commons-poco/blob/819cd008/generateContractWrappers#L7
IexecAccessorsABILegacy,
IexecCategoryManager,
IexecConfiguration,
diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol
index c1b4d00b..15e73550 100644
--- a/contracts/facets/IexecPoco1Facet.sol
+++ b/contracts/facets/IexecPoco1Facet.sol
@@ -27,7 +27,14 @@ struct Matching {
bool hasDataset;
}
-contract IexecPoco1Facet is IexecPoco1, IexecPoco1Errors, FacetBase, IexecEscrow, SignatureVerifier, IexecPocoCommon {
+contract IexecPoco1Facet is
+ IexecPoco1,
+ IexecPoco1Errors,
+ FacetBase,
+ IexecEscrow,
+ SignatureVerifier,
+ IexecPocoCommon
+{
using Math for uint256;
using IexecLibOrders_v5 for IexecLibOrders_v5.AppOrder;
using IexecLibOrders_v5 for IexecLibOrders_v5.DatasetOrder;
diff --git a/contracts/interfaces/IexecPoco2.sol b/contracts/interfaces/IexecPoco2.sol
index 5ffe47c9..471da00a 100644
--- a/contracts/interfaces/IexecPoco2.sol
+++ b/contracts/interfaces/IexecPoco2.sol
@@ -5,7 +5,7 @@ pragma solidity ^0.8.0;
interface IexecPoco2 {
// TODO replace `taskid` by `taskId` and update the PoCo subgraph and check
- // the impact on SDKs and Middelware.
+ // the impact on SDKs and Middleware.
event AccurateContribution(address indexed worker, bytes32 indexed taskid);
event FaultyContribution(address indexed worker, bytes32 indexed taskid);
diff --git a/docs/README.md b/docs/README.md
index 4cef11ef..76a688db 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -15,36 +15,38 @@ Reports of all PoCo upgrades are available in [scripts/upgrades/](../scripts/upg
### UML diagrams
-- [Actors diagram](./diagrams.md#actors-diagram)
-- [Task statuses](./diagrams.md#task-statuses)
-- [Contribution statuses](./diagrams.md#contribution-statuses)
-- [Nominal workflow sequence](./diagrams.md#nominal)
-- [Nominal workflow sequence with TEE](./diagrams.md#nominaltee)
-- [Boost workflow sequence](./diagrams.md#boost)
-- UML class diagrams related to:
- - [IexecPoco1Facet & IexecPoco2Facet](./uml/class-uml-IexecPocoFacets.svg)
- - [IexecPocoBoostFacet](./uml/class-uml-IexecPocoBoostFacet.svg)
- - [IexecEscrows](./uml/class-uml-IexecEscrows.svg)
- - [iExec PoCo registries](./uml/class-uml-dir-registries.svg)
- - [iExec PoCo libraries](./uml/class-uml-dir-libs.svg)
- - [iExec PoCo modules (facets)](./uml/class-uml-dir-facets.svg)
+- [Actors diagram](./diagrams.md#actors-diagram)
+- [Task statuses](./diagrams.md#task-statuses)
+- [Contribution statuses](./diagrams.md#contribution-statuses)
+- [Nominal workflow sequence](./diagrams.md#nominal)
+- [Nominal workflow sequence with TEE](./diagrams.md#nominaltee)
+- [Boost workflow sequence](./diagrams.md#boost)
+- UML class diagrams related to:
+ - [IexecPoco1Facet & IexecPoco2Facet](./uml/class-uml-IexecPocoFacets.svg)
+ - [IexecPocoBoostFacet](./uml/class-uml-IexecPocoBoostFacet.svg)
+ - [IexecEscrows](./uml/class-uml-IexecEscrows.svg)
+ - [iExec PoCo registries](./uml/class-uml-dir-registries.svg)
+ - [iExec PoCo libraries](./uml/class-uml-dir-libs.svg)
+ - [iExec PoCo modules (facets)](./uml/class-uml-dir-facets.svg)
### Storage diagrams
-- [Diamond storage](./uml/storage-diagram-diamond.svg)
-- [PoCo storage](./uml/storage-diagram-poco.svg)
+- [Diamond storage](./uml/storage-diagram-diamond.svg)
+- [PoCo storage](./uml/storage-diagram-poco.svg)
## Development
This project uses trunk-based development workflow with automatic release management. It means that:
-- Only squash merge commits are accepted.
-- When merging a PR, its title is used as the commit message (configured in GitHub).
-- A check is added to enforce using the correct format for PR titles (feat:..., fix:..., ...).
-- Release please is used to manage Github releases.
+
+- Only squash merge commits are accepted.
+- When merging a PR, its title is used as the commit message (configured in GitHub).
+- A check is added to enforce using the correct format for PR titles (feat:..., fix:..., ...).
+- Release please is used to manage Github releases.
### Build
The PoCo smart contracts are in the `contracts/` folder. JSON artifacts, containing the contracts bytecode and ABI can be found in the `artifacts/` folder. In case you need to regenerate them, you can use the following command:
+
```
npm install
npm run build
@@ -62,6 +64,7 @@ npm run test
```
Additionally, you can produce a coverage report using the following command:
+
```
npm run coverage
```
@@ -71,7 +74,7 @@ The automatic testing command uses the Hardhat network by default to run the tes
#### Testing on a custom blockchain
1. Start a blockchain
- - You can either use the Hardhat CLI with the following command:
+ - You can either use the Hardhat CLI with the following command:
```
npx hardhat node []
```
@@ -79,7 +82,9 @@ The automatic testing command uses the Hardhat network by default to run the tes
2. **[Optional]** Update the configuration
If your blockchain listens to a port that is not 8545, or if the blockchain is on a different node, update the `hardhat.config.ts` configuration (network ports, accounts with mnemonic, ..) accordingly to the [Hardhat Configuration](https://hardhat.org/hardhat-runner/docs/config) documentation.
+
3. Run tests
+
```
npm run test -- --network
```
@@ -99,12 +104,13 @@ Starting from version 5, the PoCo uses a modular design based on [ERC-2535](http
The configuration file is located in `./config/config.json`.
It contains:
-- A list of categories created during the deployment process. Additional categories can be created by the contract administrator using the `createCategory` function.
-- For each chain id, a quick configuration:
- - **"asset":** can be "Token" or "Native", select which escrow to use.
- - **"token":** the address of the token to use. If asset is set to `Token`, and no token address is provided, a mock will be deployed on the fly.
- - **"v3":** a list of resources from a previous (v3) deployment. This allows previous resources to be automatically available. It also enables score transfer from v3 to v5. [optional]
- - **"v5":** deployment parameters for the new version. If factory address is set, and no salt is provided, `bytes32(0)` will be used by default.
+
+- A list of categories created during the deployment process. Additional categories can be created by the contract administrator using the `createCategory` function.
+- For each chain id, a quick configuration:
+ - **"asset":** can be "Token" or "Native", select which escrow to use.
+ - **"token":** the address of the token to use. If asset is set to `Token`, and no token address is provided, a mock will be deployed on the fly.
+ - **"v3":** a list of resources from a previous (v3) deployment. This allows previous resources to be automatically available. It also enables score transfer from v3 to v5. [optional]
+ - **"v5":** deployment parameters for the new version. If factory address is set, and no salt is provided, `bytes32(0)` will be used by default.
If you want to deploy the iExec PoCo V5 smart contracts on a new blockchain, the recommended process is to:
@@ -119,7 +125,8 @@ If you want to deploy the iExec PoCo V5 smart contracts on a new blockchain, the
##### [Optional] Additional configuration & environment variables
Environment variable can be used to alter the configuration of a deployment:
-- **SALT**: if set, the `SALT` env var will overwrite the salt parameter from the config. This can be useful to distinguish different deployments without modifying the config.
+
+- **SALT**: if set, the `SALT` env var will overwrite the salt parameter from the config. This can be useful to distinguish different deployments without modifying the config.
> **Warning:** Changing the `SALT` value will result in different contract addresses being derived. If you rely on deterministic deployment addresses for integrations or other purposes, ensure you understand the consequences before modifying the salt. Unintended changes may break existing integrations or expectations.
@@ -142,7 +149,6 @@ Example with custom salt:
SALT=0x0000000000000000000000000000000000000000000000000000000000000001 npx hardhat deploy --network hardhat
```
-
#### Contract verification
To verify contracts:
@@ -153,10 +159,10 @@ npm run verify:all -- --network # e.g. arbitrum
This script automatically reads all deployed contract addresses and their constructor arguments from the deployment artifacts and verifies them on the relevant block explorer.
-
### Format
Format a specific file or files in a directory:
+
```
npm run format
```
@@ -172,6 +178,7 @@ npm run doc
#### UML diagrams rendering
To render all UML diagrams:
+
```
npm run uml
```
@@ -196,15 +203,18 @@ npm run storage-to-diagrams
### Release
-- **Final releases** are automated using [Release Please](https://github.com/googleapis/release-please). Major, minor, and patch versions should be published through the corresponding GitHub Actions workflows.
-- **Prereleases** (`vX.Y.Z-rc.*`) should be created manually using:
+- **Final releases** are automated using [Release Please](https://github.com/googleapis/release-please). Major, minor, and patch versions should be published through the corresponding GitHub Actions workflows.
+- **Prereleases** (`vX.Y.Z-rc.*`) should be created manually using:
+
```
npm run prerelease
```
+
This command will:
- - Bump the RC version in `package.json` and `package-lock.json` files.
- - Create a new commit with the version bump.
- - Generate the corresponding Git tag.
+
+ - Bump the RC version in `package.json` and `package-lock.json` files.
+ - Create a new commit with the version bump.
+ - Generate the corresponding Git tag.
Running this command ensures that the version in package.json matches the Git tag. This alignment is required for correct package publication and to automatically determine the appropriate npm dist tag (see [publish.yml](../.github/workflows/publish.yml)).
diff --git a/docs/diagrams.md b/docs/diagrams.md
index d2cdd32a..9fae81b4 100644
--- a/docs/diagrams.md
+++ b/docs/diagrams.md
@@ -1,14 +1,16 @@
# Diagrams
## Actors diagram
+
[](https://tinyurl.com/2l3942fk)
## Task statuses
Possible workflows:
-- Nominal
-- ContributeAndFinalize
-- Boost
+
+- Nominal
+- ContributeAndFinalize
+- Boost
```mermaid
flowchart TB
@@ -25,12 +27,14 @@ flowchart TB
UNSET --> |if trust = 1,
boost_matchOrder
and boost_pushResult| COMPLETED
linkStyle 9 stroke:green
```
+
## Contribution statuses
Possible workflows:
-- Nominal
-- ContributeAndFinalize
-- Boost => **No contributions statuses in Boost flow**
+
+- Nominal
+- ContributeAndFinalize
+- Boost => **No contributions statuses in Boost flow**
```mermaid
flowchart TB
@@ -44,12 +48,15 @@ flowchart TB
## Sequence diagrams of different workflows
### Nominal
+
[](https://tinyurl.com/2nb5oau3)
### Nominal+TEE
+
[](https://tinyurl.com/2jwzqrgx)
### Boost
+
[](https://tinyurl.com/2oofk7yf)
### Nominal vs Boost vs Nominal TEE: From Match to Finalize
diff --git a/package.json b/package.json
index e487e850..470780de 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
"coverage": "npx hardhat coverage",
"verify": "npx hardhat verify",
"verify:all": "npx hardhat run scripts/verify.ts",
- "format": "npx prettier --write '**/*.{js,ts,sol,json,yml}'",
+ "format": "npx prettier --write .",
"uml": "npm run sol-to-uml && npm run puml-to-links && npm run storage-to-diagrams",
"sol-to-uml": "npx zx scripts/tools/sol-to-uml.mjs",
"puml-to-links": "npx zx scripts/tools/puml-to-links.mjs",
diff --git a/scripts/boost/1_add-modules-to-proxy.ts b/scripts/boost/1_add-modules-to-proxy.ts
index 286b8011..74cc2433 100644
--- a/scripts/boost/1_add-modules-to-proxy.ts
+++ b/scripts/boost/1_add-modules-to-proxy.ts
@@ -12,8 +12,8 @@ import {
import { Ownable__factory } from '../../typechain/factories/rlc-faucet-contract/contracts';
import config from '../../utils/config';
import { getDeployerAndOwnerSigners } from '../../utils/deploy-tools';
-import { encodeModuleProxyUpdate, printBlockTime } from '../upgrades/upgrade-helper';
import { printOnchainDiamondDescription } from '../../utils/proxy-tools';
+import { encodeModuleProxyUpdate, printBlockTime } from '../upgrades/upgrade-helper';
(async () => {
const chainId = (await ethers.provider.getNetwork()).chainId;
diff --git a/scripts/boost/README.md b/scripts/boost/README.md
index 080b593b..909a242f 100644
--- a/scripts/boost/README.md
+++ b/scripts/boost/README.md
@@ -3,11 +3,13 @@
## Locally forked Bellecour network
0. Start node
+
```
LOCAL_FORK=true npx hardhat node --no-deploy
```
1. Deploy modules and add to proxy
+
```
(export LOCAL_FORK=true; \
npx hardhat run scripts/boost/0_deploy-modules.ts --network external-hardhat && \
@@ -18,9 +20,11 @@ For later production deployment, either
A. Get transaction data from previous logs
OR
B. Re-generate it with CLI
+
```
node ../erc1538upgrade-cli/src/erc1538update.js
```
+
```
node ../erc1538upgrade-cli/src/timelock.js
```
@@ -30,6 +34,7 @@ node ../erc1538upgrade-cli/src/timelock.js
1a. Deploy modules
1b. Schedule update
+
```
const tx = await timeLockAdmin
.sendTransaction({
@@ -39,7 +44,9 @@ const tx = await timeLockAdmin
})
.then((x) => x.wait());
```
+
1c. Execute update
+
```
const tx = await timeLockAdmin
.sendTransaction({
@@ -48,4 +55,4 @@ const tx = await timeLockAdmin
data: '',
})
.then((x) => x.wait());
-```
\ No newline at end of file
+```
diff --git a/scripts/sponsoring/1_add-modules-to-proxy.ts b/scripts/sponsoring/1_add-modules-to-proxy.ts
index e96902d5..c7aa2e80 100644
--- a/scripts/sponsoring/1_add-modules-to-proxy.ts
+++ b/scripts/sponsoring/1_add-modules-to-proxy.ts
@@ -13,8 +13,8 @@ import {
TimelockController__factory,
} from '../../typechain';
import config from '../../utils/config';
-import { encodeModuleProxyUpdate, printBlockTime } from '../upgrades/upgrade-helper';
import { printOnchainDiamondDescription } from '../../utils/proxy-tools';
+import { encodeModuleProxyUpdate, printBlockTime } from '../upgrades/upgrade-helper';
if (process.env.HANDLE_SPONSORING_UPGRADE_INTERNALLY != 'true') {
(async () => {
diff --git a/scripts/sponsoring/README.md b/scripts/sponsoring/README.md
index 31167669..26517ef0 100644
--- a/scripts/sponsoring/README.md
+++ b/scripts/sponsoring/README.md
@@ -3,11 +3,13 @@
## Locally forked Bellecour network
0. Start node
+
```
LOCAL_FORK=true npx hardhat node --no-deploy
```
1. Deploy modules and add to proxy
+
```
(export LOCAL_FORK=true; \
npx hardhat run scripts/sponsoring/0_deploy-modules.ts --network external-hardhat && \
@@ -15,6 +17,7 @@ npx hardhat run scripts/sponsoring/1_add-modules-to-proxy.ts --network external-
```
2. Run test(s)
+
```
LOCAL_FORK=true npx hardhat test test/byContract/IexecPoco/04_finalize.test.ts --network external-hardhat
```
@@ -22,14 +25,15 @@ LOCAL_FORK=true npx hardhat test test/byContract/IexecPoco/04_finalize.test.ts -
OR
0. Run test(s) directly (without launching node and deploying/upgrading Poco manually)
+
```
LOCAL_FORK=true HANDLE_SPONSORING_UPGRADE_INTERNALLY=true npx hardhat test test/byContract/IexecPoco/04_finalize.test.ts
```
-
## Bellecour
0. Deploy modules
+
```
npx hardhat run scripts/sponsoring/0_deploy-modules.ts --network bellecour
```
@@ -46,14 +50,19 @@ IexecPocoAccessorsDelegate: 0xa1d371eF7bf36e89Db41276543ACf91Ec50Dd261 // https:
0b. Verify contracts
Contracts have been verified using `etherscan-verify` plugin of `hardhat-deploy` (v0.12.4):
+
```
npx hardhat --network bellecour etherscan-verify
```
+
and embedded `hardhat-verify` plugin of `hardhat` (v2.22.12):
+
```
npx hardhat run ./scripts/verify.ts --network bellecour
```
+
by previously modifiying the `.json` file produced by:
+
```
await deployments.deploy('Delegate', {
from: deployer.address,
@@ -66,15 +75,17 @@ await deployments.deploy('Delegate', {
1. Schedule upgrade
From [c54f713](https://github.com/iExecBlockchainComputing/PoCo/blob/c54f713af4a520ed3260bf119e689cf32cf85925/scripts/sponsoring/1_add-modules-to-proxy.ts) commit:
+
```
npx hardhat run scripts/sponsoring/1_add-modules-to-proxy.ts --network bellecour
```
-- Tx: https://blockscout-bellecour.iex.ec/tx/0x59c94a0206187ff9cfe36bf380dfa012f25b51189e321ed70650827230ab8bd7
+- Tx: https://blockscout-bellecour.iex.ec/tx/0x59c94a0206187ff9cfe36bf380dfa012f25b51189e321ed70650827230ab8bd7
1. Execute upgrade
From [1c5d486](https://github.com/iExecBlockchainComputing/PoCo/blob/1c5d486a90e14b8f1e5df96d90926861f103d6ea/scripts/sponsoring/1_add-modules-to-proxy.ts) commit:
+
```
npx hardhat run scripts/sponsoring/1_add-modules-to-proxy.ts --network bellecour
```
diff --git a/scripts/sponsoring/upgrade-status.md b/scripts/sponsoring/upgrade-status.md
index 6a2ad21f..32e57f61 100644
--- a/scripts/sponsoring/upgrade-status.md
+++ b/scripts/sponsoring/upgrade-status.md
@@ -1,4 +1,4 @@
-# PoCo v5.5 upgrade status
+# PoCo v5.5 upgrade status
## Legacy modules linked to proxy before this v5.5 upgrade
@@ -8,7 +8,6 @@
| [IexecPocoDelegate](https://github.com/iExecBlockchainComputing/PoCo/blob/v5.2.1/contracts/modules/delegates/IexecPocoDelegate.sol) | [0xE20a3d2B778B9e924c68dD74beB6723620eBaD0c](https://blockscout-bellecour.iex.ec/address/0xE20a3d2B778B9e924c68dD74beB6723620eBaD0c) |
| [IexecPocoAccessorsDelegate](https://github.com/iExecBlockchainComputing/PoCo/blob/v5.4.3/contracts/modules/delegates/IexecAccessorsABILegacyDelegate.sol) | [0xAa567D6C87C465A5a15b8efAe4778acD33e6Cd66](https://blockscout-bellecour.iex.ec/address/0xAa567D6C87C465A5a15b8efAe4778acD33e6Cd66) |
-
## New modules deployed for v5.5 upgrade
| Contract | Address | Deployment |
@@ -18,18 +17,20 @@
| IexecPoco2Delegate | [0x7eCf076343FBe296Da2D39f20B2a01AaBB68CC27](https://blockscout-bellecour.iex.ec/address/0x7eCf076343FBe296Da2D39f20B2a01AaBB68CC27/contracts#address-tabs) | [0x4013dcc930acc2ac5fa53f4ad1062e4b6bd0deb6945972534b2db3586a6617d1](https://blockscout-bellecour.iex.ec/tx/0x4013dcc930acc2ac5fa53f4ad1062e4b6bd0deb6945972534b2db3586a6617d1) |
| IexecPocoAccessorsDelegate | [0xa1d371eF7bf36e89Db41276543ACf91Ec50Dd261](https://blockscout-bellecour.iex.ec/address/0xa1d371eF7bf36e89Db41276543ACf91Ec50Dd261/contracts#address-tabs) | [0xcc90f94b6ddb809720f94271b7b58bef9b24c4fe6e92a72f1271c5f83912081f](https://blockscout-bellecour.iex.ec/tx/0xcc90f94b6ddb809720f94271b7b58bef9b24c4fe6e92a72f1271c5f83912081f) |
-
## Linking of these new modules to proxy is scheduled on TimelockControler
```
Block#30158507: Mon Sep 23 2024 17:31:40 GMT+0200 (Central European Summer Time) (timestamp:1727105500)
Timelock proposer: 0x0B3a38b0A47aB0c5E8b208A703de366751Df5916
```
-- Tx: https://blockscout-bellecour.iex.ec/tx/0x59c94a0206187ff9cfe36bf380dfa012f25b51189e321ed70650827230ab8bd7
-- The ERC1538Proxy currently supports 96 functions.
+
+- Tx: https://blockscout-bellecour.iex.ec/tx/0x59c94a0206187ff9cfe36bf380dfa012f25b51189e321ed70650827230ab8bd7
+- The ERC1538Proxy currently supports 96 functions.
Now 7-days are required before executing linking of new modules.
-- Functions from `IexecOrderManagementDelegate`, `IexecPoco1Delegate`, `IexecPoco2Delegate` & `IexecPocoAccessorsDelegate` modules that will be added to proxy (or modified on proxy):
+
+- Functions from `IexecOrderManagementDelegate`, `IexecPoco1Delegate`, `IexecPoco2Delegate` & `IexecPocoAccessorsDelegate` modules that will be added to proxy (or modified on proxy):
+
```
- manageAppOrder(((address,uint256,uint256,bytes32,address,address,address,bytes32,bytes),uint8,bytes));
- manageDatasetOrder(((address,uint256,uint256,bytes32,address,address,address,bytes32,bytes),uint8,bytes));
@@ -73,7 +74,8 @@ Now 7-days are required before executing linking of new modules.
Block#30158507: Mon Sep 23 2024 17:31:40 GMT+0200 (Central European Summer Time) (timestamp:1727105500)
Timelock proposer: 0x0B3a38b0A47aB0c5E8b208A703de366751Df5916
```
-- Tx: 0x71b904f526a9be218d35748f57d74ef6da20d12c88f94cfa1ec5ae2de187cb98
+
+- Tx: 0x71b904f526a9be218d35748f57d74ef6da20d12c88f94cfa1ec5ae2de187cb98
```
[...]
diff --git a/scripts/tools/puml-to-links.mjs b/scripts/tools/puml-to-links.mjs
index 23c50fac..e519dc27 100644
--- a/scripts/tools/puml-to-links.mjs
+++ b/scripts/tools/puml-to-links.mjs
@@ -14,10 +14,9 @@
// in order to force recreation of this parent diagram made of updated and
// included child diagrams.
+$.verbose = false; // Disable bash commands logging.
-$.verbose = false // Disable bash commands logging.
-
-const projectRootDir = await $`dirname ${__dirname}`
+const projectRootDir = await $`dirname ${__dirname}`;
// Search for markdown files and update puml links.
-const output = await $`npx puml-for-markdown -x ${projectRootDir}/docs/`
+const output = await $`npx puml-for-markdown -x ${projectRootDir}/docs/`;
console.log(output.toString());
diff --git a/scripts/tools/sol-to-uml.mjs b/scripts/tools/sol-to-uml.mjs
index af32a3dc..10067105 100644
--- a/scripts/tools/sol-to-uml.mjs
+++ b/scripts/tools/sol-to-uml.mjs
@@ -3,37 +3,22 @@
// Usage: "npm run sol-to-uml" or "npx zx scripts/tools/solidity-to-uml.mjs"
// For sol2uml documentation, see https://github.com/naddison36/sol2uml#usage
+$.verbose = false; // Disable bash commands logging.
-$.verbose = false // Disable bash commands logging.
+const projectRootDir = await $`pwd`;
-const projectRootDir = await $`pwd`
+await generateClassDiagramOfDirectory('libs');
+await generateClassDiagramOfDirectory('facets');
+await generateClassDiagramOfDirectory('registries');
-await generateClassDiagramOfDirectory('libs')
-await generateClassDiagramOfDirectory('facets')
-await generateClassDiagramOfDirectory('registries')
+await generateClassDiagramOfContracts(['IexecPoco1Facet', 'IexecPoco2Facet'], 'IexecPocoFacets');
await generateClassDiagramOfContracts(
- [
- 'IexecPoco1Facet',
- 'IexecPoco2Facet'
- ],
- 'IexecPocoFacets',
-)
-
-await generateClassDiagramOfContracts(
- [
- 'IexecEscrowNativeFacet',
- 'IexecEscrowTokenFacet',
- 'IexecEscrowTokenSwapFacet',
- 'IexecEscrow',
- ],
+ ['IexecEscrowNativeFacet', 'IexecEscrowTokenFacet', 'IexecEscrowTokenSwapFacet', 'IexecEscrow'],
'IexecEscrows',
-)
+);
-await generateClassDiagramOfContracts(
- ['IexecPocoBoostFacet'],
- 'IexecPocoBoostFacet',
-)
+await generateClassDiagramOfContracts(['IexecPocoBoostFacet'], 'IexecPocoBoostFacet');
/**
* Generate UML class diagrams for contracts in a given directory.
@@ -43,7 +28,7 @@ async function generateClassDiagramOfDirectory(directory) {
console.log(`Generating class diagram for directory : ${directory}`);
const diagramName = directory.replace('/', '-');
await $`cd ${projectRootDir}/ &&
- npx sol2uml class contracts/${directory}/ -o docs/uml/class-uml-dir-${diagramName}.svg`
+ npx sol2uml class contracts/${directory}/ -o docs/uml/class-uml-dir-${diagramName}.svg`;
}
/**
@@ -57,5 +42,5 @@ async function generateClassDiagramOfContracts(contractsList, diagramName) {
// -b, --baseContractNames
// only output contracts connected to these comma separated base contract names
await $`cd ${projectRootDir}/ &&
- npx sol2uml class contracts/ -b ${baseContracts} -o docs/uml/class-uml-${diagramName}.svg`
+ npx sol2uml class contracts/ -b ${baseContracts} -o docs/uml/class-uml-${diagramName}.svg`;
}
diff --git a/scripts/upgrades/README.md b/scripts/upgrades/README.md
index 94dab3c6..7a0cac48 100644
--- a/scripts/upgrades/README.md
+++ b/scripts/upgrades/README.md
@@ -6,40 +6,43 @@ a safe, traceable, and reproducible upgrade to the PoCo Diamond proxy.
## Upgrade Steps
0. **Ensure all tests pass**:
- Run the full test suite to make sure everything is working before starting an upgrade.
+ Run the full test suite to make sure everything is working before starting an upgrade.
1. **Create a new upgrade script**:
- Name the script using the version and upgrade name format `vX.Y.Z-upgrade-name.ts` and
- implement the upgrade logic.
+ Name the script using the version and upgrade name format `vX.Y.Z-upgrade-name.ts` and
+ implement the upgrade logic.
2. **Create a corresponding Markdown report**:
- Copy the template file `v0.0.0-template.md` and rename it to match the script file name.
- The name should be of the form `vX.Y.Z-upgrade-name.md`.
+ Copy the template file `v0.0.0-template.md` and rename it to match the script file name.
+ The name should be of the form `vX.Y.Z-upgrade-name.md`.
3. **Test dry-runs locally**:
- Use the script [./dry-run.sh](./dry-run.sh) and check the logs.
+ Use the script [./dry-run.sh](./dry-run.sh) and check the logs.
4. **Update GitHub Actions**:
- Modify `upgrade-facets.yml` workflow to call the new upgrade script.
- Note: to run the upgrade script manually (for testing), use:
+ Modify `upgrade-facets.yml` workflow to call the new upgrade script.
+ Note: to run the upgrade script manually (for testing), use:
+
```
npx hardhat run scripts/upgrades/vX.Y.Z-upgrade-name.ts --network
```
5. **Upgrade on Testnet**:
- - β οΈ Always upgrade on the testnet first.
- - Trigger the upgrade workflow on GitHub and choose the testnet network.
- - Start with a **dry run** to simulate the upgrade.
- - Once verified, apply the upgrade on the live testnet.
+
+ - β οΈ Always upgrade on the testnet first.
+ - Trigger the upgrade workflow on GitHub and choose the testnet network.
+ - Start with a **dry run** to simulate the upgrade.
+ - Once verified, apply the upgrade on the live testnet.
6. **Upgrade on Mainnet**:
- - Trigger the upgrade workflow on GitHub and choose the mainnet network.
- - Perform a dry run first.
- - Apply the upgrade on the mainnet.
- - Merge the artifacts PR after successful execution.
+
+ - Trigger the upgrade workflow on GitHub and choose the mainnet network.
+ - Perform a dry run first.
+ - Apply the upgrade on the mainnet.
+ - Merge the artifacts PR after successful execution.
7. **Update upgrade report**:
- Fill in all required information in `vX.Y.Z-upgrade-name.ts` (tx hashes, logs, ...).
+ Fill in all required information in `vX.Y.Z-upgrade-name.ts` (tx hashes, logs, ...).
8. **Create a release**
- - Use **Release Please** to tag the upgraded version and create the release on GitHub.
+ - Use **Release Please** to tag the upgraded version and create the release on GitHub.
diff --git a/scripts/upgrades/v0.0.0-template.md b/scripts/upgrades/v0.0.0-template.md
index 663c0c3f..053290b8 100644
--- a/scripts/upgrades/v0.0.0-template.md
+++ b/scripts/upgrades/v0.0.0-template.md
@@ -1,17 +1,17 @@
# Upgrade v0.0.0 - Awesome Feature
-- **Date**: YYYY-MM-DD
-- **Git tag**: [vX.Y.Z](https://github.com/iExecBlockchainComputing/PoCo/releases/tag/)
-- **Upgrade script**: `./vX.Y.Z-awesome-feature.ts`
-- **Upgrade GitHub Action run**:
- - **Testnet**: [run id](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/)
- - **Mainnet**: [run id](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/)
+- **Date**: YYYY-MM-DD
+- **Git tag**: [vX.Y.Z](https://github.com/iExecBlockchainComputing/PoCo/releases/tag/)
+- **Upgrade script**: `./vX.Y.Z-awesome-feature.ts`
+- **Upgrade GitHub Action run**:
+ - **Testnet**: [run id](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/)
+ - **Mainnet**: [run id](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/)
## Summary of changes
-- Add awesome feature
-- Remove deprecated function
-- Rename badly named getter
+- Add awesome feature
+- Remove deprecated function
+- Rename badly named getter
## Deployment logs
diff --git a/scripts/upgrades/v6.1.0-bulk-processing.md b/scripts/upgrades/v6.1.0-bulk-processing.md
index 5f435d9e..eb9ef324 100644
--- a/scripts/upgrades/v6.1.0-bulk-processing.md
+++ b/scripts/upgrades/v6.1.0-bulk-processing.md
@@ -1,28 +1,28 @@
# Upgrade v6.1.0 - Bulk Processing
-- **Date**: 2025-10-24
-- **Git tag**: [v6.1.0](https://github.com/iExecBlockchainComputing/PoCo/releases/tag/v6.1.0)
-- **Upgrade script**: `./v6.1.0-bulk-processing.ts`
-- **Upgrade GitHub Action run**: // TODO
- - **Testnet**: [run id](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/18775709142)
- - **Mainnet**: [TODO](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/)
+- **Date**: 2025-10-24
+- **Git tag**: [v6.1.0](https://github.com/iExecBlockchainComputing/PoCo/releases/tag/v6.1.0)
+- **Upgrade script**: `./v6.1.0-bulk-processing.ts`
+- **Upgrade GitHub Action run**: // TODO
+ - **Testnet**: [run id](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/18775709142)
+ - **Mainnet**: [TODO](https://github.com/iExecBlockchainComputing/PoCo/actions/runs/)
## Summary of changes
-- Removes unintentionally added constants getters by changing constants visibility to `internal`.
-These functions were introduced as a side-effect of the migration to the Diamond proxy but they are
-used nowhere. They are duplicate of other existing functions:
- - `CONTRIBUTION_DEADLINE_RATIO()`
- - `FINAL_DEADLINE_RATIO()`
- - `GROUPMEMBER_PURPOSE()`
- - `KITTY_ADDRESS()`
- - `KITTY_MIN()`
- - `KITTY_RATIO()`
- - `REVEAL_DEADLINE_RATIO()`
- - `WORKERPOOL_STAKE_RATIO()`
-- Remove Boost facets from Arbitrum Sepolia to have the same setup on testnet and mainnet.
-- Add functions `viewApp`, `viewDataset`, and `viewWorkerpool` to read asset's details in a single transaction.
-- Add function `assertDatasetDealCompatibility` to allow the SMS to check compatibility of Bulk orders with a given deal.
+- Removes unintentionally added constants getters by changing constants visibility to `internal`.
+ These functions were introduced as a side-effect of the migration to the Diamond proxy but they are
+ used nowhere. They are duplicate of other existing functions:
+ - `CONTRIBUTION_DEADLINE_RATIO()`
+ - `FINAL_DEADLINE_RATIO()`
+ - `GROUPMEMBER_PURPOSE()`
+ - `KITTY_ADDRESS()`
+ - `KITTY_MIN()`
+ - `KITTY_RATIO()`
+ - `REVEAL_DEADLINE_RATIO()`
+ - `WORKERPOOL_STAKE_RATIO()`
+- Remove Boost facets from Arbitrum Sepolia to have the same setup on testnet and mainnet.
+- Add functions `viewApp`, `viewDataset`, and `viewWorkerpool` to read asset's details in a single transaction.
+- Add function `assertDatasetDealCompatibility` to allow the SMS to check compatibility of Bulk orders with a given deal.
## Deployment logs
diff --git a/scripts/upgrades/v6.1.0-bulk-processing.ts b/scripts/upgrades/v6.1.0-bulk-processing.ts
index 125c8ac6..18286424 100644
--- a/scripts/upgrades/v6.1.0-bulk-processing.ts
+++ b/scripts/upgrades/v6.1.0-bulk-processing.ts
@@ -3,9 +3,10 @@
import { FunctionFragment } from 'ethers';
import { IexecPoco1Facet__factory, IexecPocoAccessorsFacet__factory } from '../../typechain';
+import { isArbitrumChainId, isArbitrumSepoliaChainId } from '../../utils/config';
import {
- deployFacets,
FacetDetails,
+ deployFacets,
getUpgradeContext,
linkFacetsToDiamond,
printOnchainDiamondDescription,
@@ -15,7 +16,6 @@ import {
saveOnchainDiamondDescription,
} from '../../utils/proxy-tools';
import { tryVerify } from '../verify';
-import { isArbitrumChainId, isArbitrumSepoliaChainId } from '../../utils/config';
async function main() {
console.log('Performing bulk processing upgrade...');
diff --git a/utils/proxy-tools.ts b/utils/proxy-tools.ts
index a51898ae..8cc80b1f 100644
--- a/utils/proxy-tools.ts
+++ b/utils/proxy-tools.ts
@@ -1,9 +1,9 @@
// SPDX-FileCopyrightText: 2024-2025 IEXEC BLOCKCHAIN TECH
// SPDX-License-Identifier: Apache-2.0
-import fs from 'fs';
import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers';
import { ContractFactory, FunctionFragment, Interface, ZeroAddress } from 'ethers';
+import fs from 'fs';
import { deployments, ethers } from 'hardhat';
import { FacetCut, FacetCutAction } from 'hardhat-deploy/dist/types';
import type { IDiamond } from '../typechain';
@@ -11,7 +11,6 @@ import {
DiamondCutFacet,
DiamondCutFacet__factory,
DiamondLoupeFacet__factory,
- OwnershipFacet__factory,
IexecAccessorsABILegacyFacet__factory,
IexecCategoryManagerFacet__factory,
IexecConfigurationExtraFacet__factory,
@@ -28,10 +27,11 @@ import {
IexecPocoBoostFacet__factory,
IexecRelayFacet__factory,
Ownable__factory,
+ OwnershipFacet__factory,
} from '../typechain';
import { getBaseNameFromContractFactory, getDeployerAndOwnerSigners } from '../utils/deploy-tools';
-import { getChainConfig, isFork } from './config';
import { FactoryDeployer } from './FactoryDeployer';
+import { getChainConfig, isFork } from './config';
const POCO_STORAGE_LOCATION = '0x5862653c6982c162832160cf30593645e8487b257e44d77cdd6b51eee2651b00';