From 28960a24f86c353a776181b016e9a97697fcc25c Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 24 Nov 2025 15:08:26 +0100 Subject: [PATCH 01/14] test: Rename mock contract --- .../MatchOrdersFacetMock.json} | 0 ...estHelper.sol => MatchOrdersFacetMock.sol} | 13 ++++------- .../IexecEscrowToken.receiveApproval.test.ts | 22 ++++++++----------- 3 files changed, 13 insertions(+), 22 deletions(-) rename abis/human-readable-abis/contracts/tools/testing/{ReceiveApprovalTestHelper.sol/ReceiveApprovalTestHelper.json => MatchOrdersFacetMock.sol/MatchOrdersFacetMock.json} (100%) rename contracts/tools/testing/{ReceiveApprovalTestHelper.sol => MatchOrdersFacetMock.sol} (62%) diff --git a/abis/human-readable-abis/contracts/tools/testing/ReceiveApprovalTestHelper.sol/ReceiveApprovalTestHelper.json b/abis/human-readable-abis/contracts/tools/testing/MatchOrdersFacetMock.sol/MatchOrdersFacetMock.json similarity index 100% rename from abis/human-readable-abis/contracts/tools/testing/ReceiveApprovalTestHelper.sol/ReceiveApprovalTestHelper.json rename to abis/human-readable-abis/contracts/tools/testing/MatchOrdersFacetMock.sol/MatchOrdersFacetMock.json diff --git a/contracts/tools/testing/ReceiveApprovalTestHelper.sol b/contracts/tools/testing/MatchOrdersFacetMock.sol similarity index 62% rename from contracts/tools/testing/ReceiveApprovalTestHelper.sol rename to contracts/tools/testing/MatchOrdersFacetMock.sol index 6f61ba52..ae841055 100644 --- a/contracts/tools/testing/ReceiveApprovalTestHelper.sol +++ b/contracts/tools/testing/MatchOrdersFacetMock.sol @@ -6,15 +6,12 @@ pragma solidity ^0.8.0; import {IexecLibOrders_v5} from "../../libs/IexecLibOrders_v5.sol"; /** - * @title ReceiveApprovalTestHelper * @notice Helper contract to test edge cases in receiveApproval function - * @dev This contract simulates a facet that fails silently (no error data) + * @dev This contract simulates a matchOrders that fails silently (no error data) */ -contract ReceiveApprovalTestHelper { +contract MatchOrdersFacetMock { /** - * @notice Mock matchOrders function that fails without returning error data - * @dev Uses assembly to revert without data, simulating the edge case where - * delegatecall fails and result.length == 0 + * @notice Mock matchOrders function that fails with empty error data */ function matchOrders( IexecLibOrders_v5.AppOrder calldata, @@ -24,8 +21,6 @@ contract ReceiveApprovalTestHelper { ) external pure returns (bytes32) { // Revert without any error data // This simulates: delegatecall fails with success=false and result.length=0 - assembly { - revert(0, 0) - } + revert(); } } diff --git a/test/byContract/IexecEscrow/IexecEscrowToken.receiveApproval.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken.receiveApproval.test.ts index 21bd3463..fd63c114 100644 --- a/test/byContract/IexecEscrow/IexecEscrowToken.receiveApproval.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowToken.receiveApproval.test.ts @@ -8,11 +8,12 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; import { FacetCutAction } from 'hardhat-deploy/dist/types'; import { + DiamondCutFacet__factory, IexecInterfaceToken, IexecInterfaceToken__factory, + MatchOrdersFacetMock__factory, RLC, RLC__factory, - ReceiveApprovalTestHelper__factory, } from '../../../typechain'; import { TAG_TEE } from '../../../utils/constants'; import { @@ -464,23 +465,18 @@ describe('IexecEscrowToken-receiveApproval', () => { // Deploy the mock helper contract that fails silently // This tests that the generalized _executeOperation properly handles // delegatecall failures and bubbles up errors - const mockFacet = await new ReceiveApprovalTestHelper__factory() + const mockFacetAddress = await new MatchOrdersFacetMock__factory() .connect(iexecAdmin) .deploy() - .then((tx) => tx.waitForDeployment()); - - const mockFacetAddress = await mockFacet.getAddress(); - - const mockFactory = new ReceiveApprovalTestHelper__factory(); - const matchOrdersSelector = getFunctionSelectors(mockFactory)[0]; // matchOrders is the only function + .then((tx) => tx.waitForDeployment()) + .then((contract) => contract.getAddress()); + const matchOrdersSelector = getFunctionSelectors( + new MatchOrdersFacetMock__factory(), + )[0]; // matchOrders is the only function const diamondLoupe = await ethers.getContractAt('DiamondLoupeFacet', proxyAddress); const originalFacetAddress = await diamondLoupe.facetAddress(matchOrdersSelector); - const diamondCut = await ethers.getContractAt( - 'DiamondCutFacet', - proxyAddress, - iexecAdmin, - ); + const diamondCut = DiamondCutFacet__factory.connect(proxyAddress, iexecAdmin); await diamondCut.diamondCut( [ From d45f3ae361ac9533405e9eb219b15adbcf79fb3f Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 24 Nov 2025 15:10:17 +0100 Subject: [PATCH 02/14] chore: Rename test file --- ...eApproval.test.ts => IexecEscrowToken-receiveApproval.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/byContract/IexecEscrow/{IexecEscrowToken.receiveApproval.test.ts => IexecEscrowToken-receiveApproval.test.ts} (100%) diff --git a/test/byContract/IexecEscrow/IexecEscrowToken.receiveApproval.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken-receiveApproval.test.ts similarity index 100% rename from test/byContract/IexecEscrow/IexecEscrowToken.receiveApproval.test.ts rename to test/byContract/IexecEscrow/IexecEscrowToken-receiveApproval.test.ts From d9276fed06e936451ae3deb0203bedc8c1bb7232 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 24 Nov 2025 17:01:18 +0100 Subject: [PATCH 03/14] chore: Rename npm tasks --- .github/workflows/main.yml | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9726a834..fd354c82 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,9 +27,9 @@ jobs: - name: Install dependencies run: npm ci - name: Check code formatting - run: npm run check-format + run: npm run format:check - name: Check documentation is up-to-date - run: npm run check-doc + run: npm run doc:check - name: Build run: npm run build - name: Check storage layout diff --git a/package.json b/package.json index 3cbaefb7..5d5bff44 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,13 @@ "verify": "npx hardhat verify", "verify:all": "npx hardhat run scripts/verify.ts", "format": "npx prettier --write .", - "check-format": "npx prettier --check .", + "format:check": "npx prettier --check .", "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", "storage-to-diagrams": "bash scripts/tools/storage-to-diagrams.sh", "doc": "npx hardhat clean && npx hardhat docgen", - "check-doc": "npm run doc && git diff --exit-code docs/", + "doc:check": "npm run doc && git diff --exit-code docs/", "prerelease": "npm version prerelease --preid=rc -m 'chore: v%s'" }, "files": [ From 8e86f934befa3b5084e72b4126fcc8ad34bafaf2 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:19:59 +0100 Subject: [PATCH 04/14] chore: Clean EscrowTokenFacet tests --- .../IexecEscrowToken-receiveApproval.test.ts | 73 +++++++------------ 1 file changed, 28 insertions(+), 45 deletions(-) diff --git a/test/byContract/IexecEscrow/IexecEscrowToken-receiveApproval.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken-receiveApproval.test.ts index fd63c114..7ace4fa1 100644 --- a/test/byContract/IexecEscrow/IexecEscrowToken-receiveApproval.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowToken-receiveApproval.test.ts @@ -17,7 +17,6 @@ import { } from '../../../typechain'; import { TAG_TEE } from '../../../utils/constants'; import { - IexecOrders, OrdersActors, OrdersAssets, OrdersPrices, @@ -35,26 +34,19 @@ const datasetPrice = 1_000_000n; const workerpoolPrice = 1_000_000_000n; const volume = 1n; -describe('IexecEscrowToken-receiveApproval', () => { - let proxyAddress: string; - let iexecPoco: IexecInterfaceToken; - let iexecPocoAsRequester: IexecInterfaceToken; - let rlcInstance: RLC; - let rlcInstanceAsRequester: RLC; - let [ - iexecAdmin, - requester, - scheduler, - appProvider, - datasetProvider, - anyone, - ]: SignerWithAddress[] = []; - let iexecWrapper: IexecWrapper; - let [appAddress, datasetAddress, workerpoolAddress]: string[] = []; - let ordersActors: OrdersActors; - let ordersAssets: OrdersAssets; - let ordersPrices: OrdersPrices; +let proxyAddress: string; +let iexecPoco: IexecInterfaceToken; +let rlcInstance: RLC; +let rlcInstanceAsRequester: RLC; +let [iexecAdmin, requester, scheduler, appProvider, datasetProvider, anyone]: SignerWithAddress[] = + []; +let iexecWrapper: IexecWrapper; +let [appAddress, datasetAddress, workerpoolAddress]: string[] = []; +let ordersActors: OrdersActors; +let ordersAssets: OrdersAssets; +let ordersPrices: OrdersPrices; +describe('IexecEscrowToken-receiveApproval', () => { beforeEach('Deploy', async () => { proxyAddress = await loadHardhatFixtureDeployment(); await loadFixture(initFixture); @@ -65,7 +57,6 @@ describe('IexecEscrowToken-receiveApproval', () => { ({ iexecAdmin, requester, scheduler, appProvider, datasetProvider, anyone } = accounts); iexecPoco = IexecInterfaceToken__factory.connect(proxyAddress, anyone); - iexecPocoAsRequester = iexecPoco.connect(requester); rlcInstance = RLC__factory.connect(await iexecPoco.token(), anyone); rlcInstanceAsRequester = rlcInstance.connect(requester); @@ -155,7 +146,7 @@ describe('IexecEscrowToken-receiveApproval', () => { volume: volume, }); - await signAndPrepareOrders(orders); + await signOrders(iexecWrapper.getDomain(), orders, ordersActors); const dealCost = (appPrice + datasetPrice + workerpoolPrice) * volume; const schedulerStake = await iexecWrapper.computeSchedulerDealStake( @@ -169,7 +160,7 @@ describe('IexecEscrowToken-receiveApproval', () => { const initialTotalSupply = await iexecPoco.totalSupply(); // Encode the matchOrders operation with its selector - const encodedOrders = encodeOrdersForCallback(orders); + const encodedOrders = encodeOrders(...orders.toArray()); const tx = await rlcInstanceAsRequester.approveAndCall( proxyAddress, @@ -225,7 +216,7 @@ describe('IexecEscrowToken-receiveApproval', () => { volume: volume, }); - await signAndPrepareOrders(ordersWithoutDataset); + await signOrders(iexecWrapper.getDomain(), ordersWithoutDataset, ordersActors); const dealCost = (appPrice + workerpoolPrice) * volume; const schedulerStake = await iexecWrapper.computeSchedulerDealStake( @@ -239,7 +230,7 @@ describe('IexecEscrowToken-receiveApproval', () => { iexecWrapper.hashOrders(ordersWithoutDataset); const dealId = getDealId(iexecWrapper.getDomain(), ordersWithoutDataset.requester); - const encodedOrders = encodeOrdersForCallback(ordersWithoutDataset); + const encodedOrders = encodeOrders(...ordersWithoutDataset.toArray()); const tx = rlcInstanceAsRequester.approveAndCall(proxyAddress, dealCost, encodedOrders); @@ -278,7 +269,7 @@ describe('IexecEscrowToken-receiveApproval', () => { volume: volume, }); - await signAndPrepareOrders(orders); + await signOrders(iexecWrapper.getDomain(), orders, ordersActors); const dealCost = (appPrice + datasetPrice + workerpoolPrice) * volume; const schedulerStake = await iexecWrapper.computeSchedulerDealStake( @@ -289,7 +280,7 @@ describe('IexecEscrowToken-receiveApproval', () => { await iexecWrapper.depositInIexecAccount(scheduler, schedulerStake); const initialBalance = await iexecPoco.balanceOf(requester.address); - const encodedOrders = encodeOrdersForCallback(orders); + const encodedOrders = encodeOrders(...orders.toArray()); await rlcInstanceAsRequester.approveAndCall(proxyAddress, dealCost, encodedOrders); // The available balance remains unchanged because the deposit is immediately frozen @@ -307,7 +298,7 @@ describe('IexecEscrowToken-receiveApproval', () => { }); const dealCost = (appPrice + datasetPrice + workerpoolPrice) * volume; - const encodedOrders = encodeOrdersForCallback(orders); + const encodedOrders = encodeOrders(...orders.toArray()); await expect( rlcInstanceAsRequester.approveAndCall(proxyAddress, dealCost, encodedOrders), @@ -323,7 +314,7 @@ describe('IexecEscrowToken-receiveApproval', () => { volume: volume, }); - await signAndPrepareOrders(orders); + await signOrders(iexecWrapper.getDomain(), orders, ordersActors); const dealCost = (appPrice + datasetPrice + workerpoolPrice) * volume; const schedulerStake = await iexecWrapper.computeSchedulerDealStake( @@ -334,7 +325,7 @@ describe('IexecEscrowToken-receiveApproval', () => { await iexecWrapper.depositInIexecAccount(scheduler, schedulerStake); const insufficientAmount = dealCost - 1n; - const encodedOrders = encodeOrdersForCallback(orders); + const encodedOrders = encodeOrders(...orders.toArray()); // Should revert from matchOrders due to insufficient balance await expect( @@ -387,9 +378,9 @@ describe('IexecEscrowToken-receiveApproval', () => { salt: ethers.hexlify(ethers.randomBytes(32)), }); - await signAndPrepareOrders(orders1); + await signOrders(iexecWrapper.getDomain(), orders1, ordersActors); - const encodedOrders1 = encodeOrdersForCallback(orders1); + const encodedOrders1 = encodeOrders(...orders1.toArray()); const tx1 = await rlcInstanceAsRequester.approveAndCall( proxyAddress, @@ -412,9 +403,9 @@ describe('IexecEscrowToken-receiveApproval', () => { salt: ethers.hexlify(ethers.randomBytes(32)), }); - await signAndPrepareOrders(orders2); + await signOrders(iexecWrapper.getDomain(), orders2, ordersActors); - const encodedOrders2 = encodeOrdersForCallback(orders2); + const encodedOrders2 = encodeOrders(...orders2.toArray()); const tx2 = await rlcInstanceAsRequester.approveAndCall( proxyAddress, @@ -440,13 +431,13 @@ describe('IexecEscrowToken-receiveApproval', () => { volume: volume, }); - await signAndPrepareOrders(ordersZeroPrice); + await signOrders(iexecWrapper.getDomain(), ordersZeroPrice, ordersActors); const schedulerStake = await iexecWrapper.computeSchedulerDealStake(0n, volume); await iexecWrapper.depositInIexecAccount(scheduler, schedulerStake); const dealCost = 0n; - const encodedOrders = encodeOrdersForCallback(ordersZeroPrice); + const encodedOrders = encodeOrders(...ordersZeroPrice.toArray()); const tx = await rlcInstanceAsRequester.approveAndCall( proxyAddress, @@ -500,7 +491,7 @@ describe('IexecEscrowToken-receiveApproval', () => { volume: volume, }); - const encodedOrders = encodeOrdersForCallback(orders); + const encodedOrders = encodeOrders(...orders.toArray()); const tx = rlcInstanceAsRequester.approveAndCall( proxyAddress, @@ -523,12 +514,4 @@ describe('IexecEscrowToken-receiveApproval', () => { ); }); }); - - async function signAndPrepareOrders(orders: IexecOrders): Promise { - await signOrders(iexecWrapper.getDomain(), orders, ordersActors); - } - - function encodeOrdersForCallback(orders: IexecOrders): string { - return encodeOrders(orders.app, orders.dataset, orders.workerpool, orders.requester); - } }); From 98cf136a7c1c72eee288e8f6aa97356616300f9d Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:25:43 +0100 Subject: [PATCH 05/14] style: Format code section --- contracts/facets/IexecEscrowTokenFacet.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/facets/IexecEscrowTokenFacet.sol b/contracts/facets/IexecEscrowTokenFacet.sol index be49e28c..8e260688 100644 --- a/contracts/facets/IexecEscrowTokenFacet.sol +++ b/contracts/facets/IexecEscrowTokenFacet.sol @@ -187,10 +187,11 @@ contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, IexecERC2 IexecLibOrders_v5.RequestOrder ) ); - // Validate that sender is the requester // This ensures the caller is authorized to create this deal - if (requestorder.requester != sender) revert("caller-must-be-requester"); + if (requestorder.requester != sender) { + revert("caller-must-be-requester"); + } } function _deposit(address from, uint256 amount) internal { From a069e28921ccbb72359dd4e62d6ffc9f58239c0f Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:49:17 +0100 Subject: [PATCH 06/14] chore: Move abstract contracts inside contracts/abstract/ --- contracts/{facets => abstract}/IexecPocoCommon.sol | 2 +- contracts/{facets => abstract}/SignatureVerifier.sol | 2 +- contracts/facets/IexecOrderManagementFacet.sol | 2 +- contracts/facets/IexecPoco1Facet.sol | 4 ++-- contracts/facets/IexecPoco2Facet.sol | 2 +- contracts/facets/IexecPocoAccessorsFacet.sol | 4 ++-- contracts/facets/IexecPocoBoostFacet.sol | 4 ++-- hardhat.config.ts | 5 ++--- 8 files changed, 12 insertions(+), 13 deletions(-) rename contracts/{facets => abstract}/IexecPocoCommon.sol (98%) rename contracts/{facets => abstract}/SignatureVerifier.sol (99%) diff --git a/contracts/facets/IexecPocoCommon.sol b/contracts/abstract/IexecPocoCommon.sol similarity index 98% rename from contracts/facets/IexecPocoCommon.sol rename to contracts/abstract/IexecPocoCommon.sol index 1a93cb2a..f4591e50 100644 --- a/contracts/facets/IexecPocoCommon.sol +++ b/contracts/abstract/IexecPocoCommon.sol @@ -8,7 +8,7 @@ import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; -contract IexecPocoCommon is FacetBase { +abstract contract IexecPocoCommon is FacetBase { using Math for uint256; using IexecLibOrders_v5 for IexecLibOrders_v5.AppOrder; using IexecLibOrders_v5 for IexecLibOrders_v5.DatasetOrder; diff --git a/contracts/facets/SignatureVerifier.sol b/contracts/abstract/SignatureVerifier.sol similarity index 99% rename from contracts/facets/SignatureVerifier.sol rename to contracts/abstract/SignatureVerifier.sol index 3dbaf2ea..7046ffbd 100644 --- a/contracts/facets/SignatureVerifier.sol +++ b/contracts/abstract/SignatureVerifier.sol @@ -10,7 +10,7 @@ import {FacetBase} from "../abstract/FacetBase.sol"; import {IERC734} from "../external/interfaces/IERC734.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -contract SignatureVerifier is FacetBase { +abstract contract SignatureVerifier is FacetBase { using ECDSA for bytes32; /** diff --git a/contracts/facets/IexecOrderManagementFacet.sol b/contracts/facets/IexecOrderManagementFacet.sol index 59bf704e..7df901e5 100644 --- a/contracts/facets/IexecOrderManagementFacet.sol +++ b/contracts/facets/IexecOrderManagementFacet.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.0; import {IERC5313} from "@openzeppelin/contracts/interfaces/IERC5313.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; -import {SignatureVerifier} from "./SignatureVerifier.sol"; +import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; import {IexecOrderManagement} from "../interfaces/IexecOrderManagement.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index ecea5b18..d3e9c394 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -13,8 +13,8 @@ import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecPoco1} from "../interfaces/IexecPoco1.sol"; import {IexecPoco1Errors} from "../interfaces/IexecPoco1Errors.sol"; import {IexecEscrow} from "./IexecEscrow.v8.sol"; -import {IexecPocoCommon} from "./IexecPocoCommon.sol"; -import {SignatureVerifier} from "./SignatureVerifier.sol"; +import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; +import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; struct Matching { bytes32 apporderHash; diff --git a/contracts/facets/IexecPoco2Facet.sol b/contracts/facets/IexecPoco2Facet.sol index a9ad3439..643c8eac 100644 --- a/contracts/facets/IexecPoco2Facet.sol +++ b/contracts/facets/IexecPoco2Facet.sol @@ -11,7 +11,7 @@ import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; import {IexecPoco2} from "../interfaces/IexecPoco2.sol"; import {IexecEscrow} from "./IexecEscrow.v8.sol"; -import {SignatureVerifier} from "./SignatureVerifier.sol"; +import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; contract IexecPoco2Facet is IexecPoco2, FacetBase, IexecEscrow, SignatureVerifier { modifier onlyScheduler(bytes32 _taskId) { diff --git a/contracts/facets/IexecPocoAccessorsFacet.sol b/contracts/facets/IexecPocoAccessorsFacet.sol index a6ea8e09..faac59fd 100644 --- a/contracts/facets/IexecPocoAccessorsFacet.sol +++ b/contracts/facets/IexecPocoAccessorsFacet.sol @@ -12,8 +12,8 @@ import {IApp} from "../registries/apps/IApp.v8.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; import {IexecPocoAccessors} from "../interfaces/IexecPocoAccessors.sol"; import {IRegistry} from "../registries/IRegistry.sol"; -import {IexecPocoCommon} from "./IexecPocoCommon.sol"; -import {SignatureVerifier} from "./SignatureVerifier.sol"; +import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; +import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; /** * @title Getters contract for PoCo facets. diff --git a/contracts/facets/IexecPocoBoostFacet.sol b/contracts/facets/IexecPocoBoostFacet.sol index babd1758..25fc905b 100644 --- a/contracts/facets/IexecPocoBoostFacet.sol +++ b/contracts/facets/IexecPocoBoostFacet.sol @@ -16,9 +16,9 @@ import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; import {IexecPocoBoost} from "../interfaces/IexecPocoBoost.sol"; import {IexecEscrow} from "./IexecEscrow.v8.sol"; -import {IexecPocoCommon} from "./IexecPocoCommon.sol"; +import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import {SignatureVerifier} from "./SignatureVerifier.sol"; +import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; // // Not deployed yet! diff --git a/hardhat.config.ts b/hardhat.config.ts index 80773ca2..3836bec3 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -237,13 +237,12 @@ const config: HardhatUserConfig = { outputDir: 'docs/solidity', templates: 'docs/solidity/templates', exclude: [ + 'abstract/IexecPocoCommon.sol', // contains only internal/private + 'abstract/SignatureVerifier.sol', // contains only internal/private 'external', - 'facets/FacetBase.sol', // duplicated in FacetBase.v8.sol 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private // kept for events 'facets/IexecEscrow.v8.sol', // contains only internal/private - 'facets/IexecPocoCommon.sol', // contains only internal/private - 'facets/SignatureVerifier.sol', // contains only internal/private 'interfaces', // interesting for events but too much doc duplication if enabled 'tools', 'Diamond.sol', // not relevant From 844778b3a765820723f218c85b3a19389cc5fba9 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:51:00 +0100 Subject: [PATCH 07/14] chore: Remove .v8 from IexecEscrow contract file --- contracts/facets/{IexecEscrow.v8.sol => IexecEscrow.sol} | 0 contracts/facets/IexecPoco1Facet.sol | 2 +- contracts/facets/IexecPoco2Facet.sol | 2 +- contracts/facets/IexecPocoBoostFacet.sol | 2 +- contracts/tools/testing/IexecEscrowTestContract.sol | 4 ++-- hardhat.config.ts | 2 +- .../{IexecEscrow.v8.test.ts => IexecEscrow.test.ts} | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) rename contracts/facets/{IexecEscrow.v8.sol => IexecEscrow.sol} (100%) rename test/byContract/IexecPocoBoost/{IexecEscrow.v8.test.ts => IexecEscrow.test.ts} (99%) diff --git a/contracts/facets/IexecEscrow.v8.sol b/contracts/facets/IexecEscrow.sol similarity index 100% rename from contracts/facets/IexecEscrow.v8.sol rename to contracts/facets/IexecEscrow.sol diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index d3e9c394..73348303 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -12,7 +12,7 @@ import {FacetBase} from "../abstract/FacetBase.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecPoco1} from "../interfaces/IexecPoco1.sol"; import {IexecPoco1Errors} from "../interfaces/IexecPoco1Errors.sol"; -import {IexecEscrow} from "./IexecEscrow.v8.sol"; +import {IexecEscrow} from "./IexecEscrow.sol"; import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; diff --git a/contracts/facets/IexecPoco2Facet.sol b/contracts/facets/IexecPoco2Facet.sol index 643c8eac..28001b22 100644 --- a/contracts/facets/IexecPoco2Facet.sol +++ b/contracts/facets/IexecPoco2Facet.sol @@ -10,7 +10,7 @@ import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; import {IexecPoco2} from "../interfaces/IexecPoco2.sol"; -import {IexecEscrow} from "./IexecEscrow.v8.sol"; +import {IexecEscrow} from "./IexecEscrow.sol"; import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; contract IexecPoco2Facet is IexecPoco2, FacetBase, IexecEscrow, SignatureVerifier { diff --git a/contracts/facets/IexecPocoBoostFacet.sol b/contracts/facets/IexecPocoBoostFacet.sol index 25fc905b..e1749dc5 100644 --- a/contracts/facets/IexecPocoBoostFacet.sol +++ b/contracts/facets/IexecPocoBoostFacet.sol @@ -15,7 +15,7 @@ import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; import {IexecPocoBoost} from "../interfaces/IexecPocoBoost.sol"; -import {IexecEscrow} from "./IexecEscrow.v8.sol"; +import {IexecEscrow} from "./IexecEscrow.sol"; import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; diff --git a/contracts/tools/testing/IexecEscrowTestContract.sol b/contracts/tools/testing/IexecEscrowTestContract.sol index 13863259..d93ef1af 100644 --- a/contracts/tools/testing/IexecEscrowTestContract.sol +++ b/contracts/tools/testing/IexecEscrowTestContract.sol @@ -3,12 +3,12 @@ pragma solidity ^0.8.0; -import {IexecEscrow} from "../../facets/IexecEscrow.v8.sol"; +import {IexecEscrow} from "../../facets/IexecEscrow.sol"; import {PocoStorageLib} from "../../libs/PocoStorageLib.sol"; /** * @notice a wrapper contract to make internal functions of - * IexecEscrow.v8 testable. + * IexecEscrow testable. */ contract IexecEscrowTestContract is IexecEscrow { function lock_(address account, uint256 value) external { diff --git a/hardhat.config.ts b/hardhat.config.ts index 3836bec3..78a50ec3 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -242,7 +242,7 @@ const config: HardhatUserConfig = { 'external', 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private - // kept for events 'facets/IexecEscrow.v8.sol', // contains only internal/private + // kept for events 'facets/IexecEscrow.sol', // contains only internal/private 'interfaces', // interesting for events but too much doc duplication if enabled 'tools', 'Diamond.sol', // not relevant diff --git a/test/byContract/IexecPocoBoost/IexecEscrow.v8.test.ts b/test/byContract/IexecPocoBoost/IexecEscrow.test.ts similarity index 99% rename from test/byContract/IexecPocoBoost/IexecEscrow.v8.test.ts rename to test/byContract/IexecPocoBoost/IexecEscrow.test.ts index 37e4d370..7a38a688 100644 --- a/test/byContract/IexecPocoBoost/IexecEscrow.v8.test.ts +++ b/test/byContract/IexecPocoBoost/IexecEscrow.test.ts @@ -16,7 +16,7 @@ let iexecEscrow: IexecEscrowTestContract; let iexecEscrowAddress: string; let account: SignerWithAddress; -describe('IexecEscrow.v8', function () { +describe('IexecEscrow', function () { beforeEach('Deploy', async () => { // Initialize test environment await loadFixture(initFixture); From cac8be4b51db06a2195e74e30376af7f9c5892ab Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:00:07 +0100 Subject: [PATCH 08/14] chore: Move IexecEscrow contract to abstract folder --- contracts/{facets => abstract}/IexecEscrow.sol | 2 +- contracts/facets/IexecPoco1Facet.sol | 2 +- contracts/facets/IexecPoco2Facet.sol | 2 +- contracts/facets/IexecPocoBoostFacet.sol | 2 +- contracts/tools/testing/IexecEscrowTestContract.sol | 2 +- hardhat.config.ts | 7 +++---- 6 files changed, 8 insertions(+), 9 deletions(-) rename contracts/{facets => abstract}/IexecEscrow.sol (98%) diff --git a/contracts/facets/IexecEscrow.sol b/contracts/abstract/IexecEscrow.sol similarity index 98% rename from contracts/facets/IexecEscrow.sol rename to contracts/abstract/IexecEscrow.sol index 6850975e..e0efc2b1 100644 --- a/contracts/facets/IexecEscrow.sol +++ b/contracts/abstract/IexecEscrow.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import {FacetBase} from "../abstract/FacetBase.sol"; +import {FacetBase} from "./FacetBase.sol"; /** * @title Manage (lock/unlock/reward/seize) user funds. diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index 73348303..3116f49b 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -12,7 +12,7 @@ import {FacetBase} from "../abstract/FacetBase.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecPoco1} from "../interfaces/IexecPoco1.sol"; import {IexecPoco1Errors} from "../interfaces/IexecPoco1Errors.sol"; -import {IexecEscrow} from "./IexecEscrow.sol"; +import {IexecEscrow} from "../abstract/IexecEscrow.sol"; import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; diff --git a/contracts/facets/IexecPoco2Facet.sol b/contracts/facets/IexecPoco2Facet.sol index 28001b22..79d8987e 100644 --- a/contracts/facets/IexecPoco2Facet.sol +++ b/contracts/facets/IexecPoco2Facet.sol @@ -10,7 +10,7 @@ import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; import {IexecPoco2} from "../interfaces/IexecPoco2.sol"; -import {IexecEscrow} from "./IexecEscrow.sol"; +import {IexecEscrow} from "../abstract/IexecEscrow.sol"; import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; contract IexecPoco2Facet is IexecPoco2, FacetBase, IexecEscrow, SignatureVerifier { diff --git a/contracts/facets/IexecPocoBoostFacet.sol b/contracts/facets/IexecPocoBoostFacet.sol index e1749dc5..86fce216 100644 --- a/contracts/facets/IexecPocoBoostFacet.sol +++ b/contracts/facets/IexecPocoBoostFacet.sol @@ -15,7 +15,7 @@ import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; import {FacetBase} from "../abstract/FacetBase.sol"; import {IexecPocoBoost} from "../interfaces/IexecPocoBoost.sol"; -import {IexecEscrow} from "./IexecEscrow.sol"; +import {IexecEscrow} from "../abstract/IexecEscrow.sol"; import {IexecPocoCommon} from "../abstract/IexecPocoCommon.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {SignatureVerifier} from "../abstract/SignatureVerifier.sol"; diff --git a/contracts/tools/testing/IexecEscrowTestContract.sol b/contracts/tools/testing/IexecEscrowTestContract.sol index d93ef1af..4d20a5a3 100644 --- a/contracts/tools/testing/IexecEscrowTestContract.sol +++ b/contracts/tools/testing/IexecEscrowTestContract.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import {IexecEscrow} from "../../facets/IexecEscrow.sol"; +import {IexecEscrow} from "../../abstract/IexecEscrow.sol"; import {PocoStorageLib} from "../../libs/PocoStorageLib.sol"; /** diff --git a/hardhat.config.ts b/hardhat.config.ts index 78a50ec3..72a3242c 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -239,12 +239,11 @@ const config: HardhatUserConfig = { exclude: [ 'abstract/IexecPocoCommon.sol', // contains only internal/private 'abstract/SignatureVerifier.sol', // contains only internal/private - 'external', + 'external/', 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private - // kept for events 'facets/IexecEscrow.sol', // contains only internal/private - 'interfaces', // interesting for events but too much doc duplication if enabled - 'tools', + 'interfaces/', // interesting for events but too much doc duplication if enabled + 'tools/', 'Diamond.sol', // not relevant ], }, From fbdcf8cfab2062981c7cdc781d9961e920bbc509 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:17:12 +0100 Subject: [PATCH 09/14] chore: Update abis --- .../{facets/IexecEscrow.v8.json => abstract/IexecEscrow.json} | 0 .../IexecEscrow.sol}/IexecEscrow.json | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename abis/contracts/{facets/IexecEscrow.v8.json => abstract/IexecEscrow.json} (100%) rename abis/human-readable-abis/contracts/{facets/IexecEscrow.v8.sol => abstract/IexecEscrow.sol}/IexecEscrow.json (100%) diff --git a/abis/contracts/facets/IexecEscrow.v8.json b/abis/contracts/abstract/IexecEscrow.json similarity index 100% rename from abis/contracts/facets/IexecEscrow.v8.json rename to abis/contracts/abstract/IexecEscrow.json diff --git a/abis/human-readable-abis/contracts/facets/IexecEscrow.v8.sol/IexecEscrow.json b/abis/human-readable-abis/contracts/abstract/IexecEscrow.sol/IexecEscrow.json similarity index 100% rename from abis/human-readable-abis/contracts/facets/IexecEscrow.v8.sol/IexecEscrow.json rename to abis/human-readable-abis/contracts/abstract/IexecEscrow.sol/IexecEscrow.json From 05b18d388dd07aa6be00b5fd36aec92679c4ed87 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:17:24 +0100 Subject: [PATCH 10/14] chore: Add todo --- hardhat.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 72a3242c..6183d517 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -241,7 +241,7 @@ const config: HardhatUserConfig = { 'abstract/SignatureVerifier.sol', // contains only internal/private 'external/', 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant - // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private + // TODO: put all events and soldoc inside interfaces and use them instead of contracts. 'interfaces/', // interesting for events but too much doc duplication if enabled 'tools/', 'Diamond.sol', // not relevant From 26434f9cc6dac43f99409aaf9fa54d60b2e91dca Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:22:42 +0100 Subject: [PATCH 11/14] chore: Clean mock contract --- contracts/tools/testing/MatchOrdersFacetMock.sol | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/contracts/tools/testing/MatchOrdersFacetMock.sol b/contracts/tools/testing/MatchOrdersFacetMock.sol index ae841055..10ca7ac6 100644 --- a/contracts/tools/testing/MatchOrdersFacetMock.sol +++ b/contracts/tools/testing/MatchOrdersFacetMock.sol @@ -7,12 +7,9 @@ import {IexecLibOrders_v5} from "../../libs/IexecLibOrders_v5.sol"; /** * @notice Helper contract to test edge cases in receiveApproval function - * @dev This contract simulates a matchOrders that fails silently (no error data) + * @dev This contract simulates a matchOrders that fails with empty error data. */ contract MatchOrdersFacetMock { - /** - * @notice Mock matchOrders function that fails with empty error data - */ function matchOrders( IexecLibOrders_v5.AppOrder calldata, IexecLibOrders_v5.DatasetOrder calldata, From e4afac11e0cab72b7b650065dca5ed3d10f1157f Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:24:30 +0100 Subject: [PATCH 12/14] docs: Update solidity docs --- docs/solidity/index.md | 64 +++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index f0cc2c32..b821cdfc 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -58,6 +58,38 @@ function increaseAllowance(address spender, uint256 addedValue) external returns function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` +## IexecEscrow + +### Transfer + +```solidity +event Transfer(address from, address to, uint256 value) +``` + +### Lock + +```solidity +event Lock(address owner, uint256 amount) +``` + +### Unlock + +```solidity +event Unlock(address owner, uint256 amount) +``` + +### Reward + +```solidity +event Reward(address owner, uint256 amount, bytes32 ref) +``` + +### Seize + +```solidity +event Seize(address owner, uint256 amount, bytes32 ref) +``` + ## IexecCategoryManagerFacet ### createCategory @@ -114,38 +146,6 @@ function setTeeBroker(address _teebroker) external function setCallbackGas(uint256 _callbackgas) external ``` -## IexecEscrow - -### Transfer - -```solidity -event Transfer(address from, address to, uint256 value) -``` - -### Lock - -```solidity -event Lock(address owner, uint256 amount) -``` - -### Unlock - -```solidity -event Unlock(address owner, uint256 amount) -``` - -### Reward - -```solidity -event Reward(address owner, uint256 amount, bytes32 ref) -``` - -### Seize - -```solidity -event Seize(address owner, uint256 amount, bytes32 ref) -``` - ## IexecEscrowNativeFacet ### receive From e4b47375c711b4c1359d616611b751bda97aa8af Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 12:26:32 +0100 Subject: [PATCH 13/14] docs: Update uml diagrams --- docs/uml/class-uml-IexecEscrows.svg | 1050 ++++++++--- docs/uml/class-uml-IexecPocoBoostFacet.svg | 1470 ++++++++-------- docs/uml/class-uml-IexecPocoFacets.svg | 1858 ++++++++++---------- docs/uml/class-uml-dir-facets.svg | 739 +++----- docs/uml/class-uml-dir-libs.svg | 934 +++++----- docs/uml/class-uml-dir-registries.svg | 346 ++-- docs/uml/storage-diagram-poco.svg | 6 +- 7 files changed, 3319 insertions(+), 3084 deletions(-) diff --git a/docs/uml/class-uml-IexecEscrows.svg b/docs/uml/class-uml-IexecEscrows.svg index 9a48db4a..77d05204 100644 --- a/docs/uml/class-uml-IexecEscrows.svg +++ b/docs/uml/class-uml-IexecEscrows.svg @@ -4,314 +4,810 @@ - - + + UmlClassDiagram - - + + -5 - -<<Abstract>> -FacetBase -contracts/facets/FacetBase.v8.sol - -Internal: -   CONTRIBUTION_DEADLINE_RATIO: uint256 -   REVEAL_DEADLINE_RATIO: uint256 -   FINAL_DEADLINE_RATIO: uint256 -   WORKERPOOL_STAKE_RATIO: uint256 -   KITTY_RATIO: uint256 -   KITTY_MIN: uint256 -   KITTY_ADDRESS: address -   GROUPMEMBER_PURPOSE: uint256 - -Internal: -    _msgSender(): address - - +4 + +<<Abstract>> +FacetBase +contracts/abstract/FacetBase.sol + +Internal: +   CONTRIBUTION_DEADLINE_RATIO: uint256 +   REVEAL_DEADLINE_RATIO: uint256 +   FINAL_DEADLINE_RATIO: uint256 +   WORKERPOOL_STAKE_RATIO: uint256 +   KITTY_RATIO: uint256 +   KITTY_MIN: uint256 +   KITTY_ADDRESS: address +   GROUPMEMBER_PURPOSE: uint256 + +Internal: +    owner(): address +    _msgSender(): address +Public: +    <<modifier>> onlyOwner() + + -10 - -IexecERC20Core -contracts/facets/IexecERC20Core.sol - -Internal: -    _transferUnchecked(sender: address, recipient: address, amount: uint256) -    _transfer(sender: address, recipient: address, amount: uint256) -    _mint(account: address, amount: uint256) -    _burn(account: address, amount: uint256) -    _approve(owner: address, spender: address, amount: uint256) -Public: -    <<event>> Transfer(from: address, to: address, value: uint256) -    <<event>> Approval(owner: address, spender: address, value: uint256) - - - -12 - -IexecEscrow -contracts/facets/IexecEscrow.v8.sol - -Private: -    _transfer(from: address, to: address, value: uint256) -Internal: -    lock(account: address, value: uint256) -    unlock(account: address, value: uint256) -    reward(account: address, value: uint256, ref: bytes32) -    seize(account: address, value: uint256, ref: bytes32) -Public: -    <<event>> Transfer(from: address, to: address, value: uint256) -    <<event>> Lock(owner: address, amount: uint256) -    <<event>> Unlock(owner: address, amount: uint256) -    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) -    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) - - +5 + +<<Abstract>> +IexecERC20Base +contracts/abstract/IexecERC20Base.sol + +Internal: +    _transferUnchecked(sender: address, recipient: address, amount: uint256) +    _transfer(sender: address, recipient: address, amount: uint256) +    _mint(account: address, amount: uint256) +    _burn(account: address, amount: uint256) +    _approve(owner: address, spender: address, amount: uint256) +External: +    transfer(recipient: address, amount: uint256): bool +    approve(spender: address, value: uint256): bool +    approveAndCall(spender: address, value: uint256, extraData: bytes): bool +    transferFrom(sender: address, recipient: address, amount: uint256): bool +    increaseAllowance(spender: address, addedValue: uint256): bool +    decreaseAllowance(spender: address, subtractedValue: uint256): bool + + + +5->4 + + + + + +28 + +<<Interface>> +IexecERC20 +contracts/interfaces/IexecERC20.sol + +External: +     transfer(address, uint256): bool +     approve(address, uint256): bool +     transferFrom(address, address, uint256): bool +     increaseAllowance(address, uint256): bool +     decreaseAllowance(address, uint256): bool +     approveAndCall(address, uint256, bytes): bool +Public: +    <<event>> Transfer(from: address, to: address, value: uint256) +    <<event>> Approval(owner: address, spender: address, value: uint256) +    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) +    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) +    <<event>> Lock(owner: address, amount: uint256) +    <<event>> Unlock(owner: address, amount: uint256) + + -12->5 - - +5->28 + + - + -70 - -<<Library>> -PocoStorageLib -contracts/libs/PocoStorageLib.v8.sol - -Private: -   POCO_STORAGE_LOCATION: bytes32 - -Internal: -    getPocoStorage(): ($: PocoStorage) - - - -12->70 - - +40 + +<<Interface>> +IexecTokenSpender +contracts/interfaces/IexecTokenSpender.sol + +External: +     receiveApproval(address, uint256, address, bytes): bool - - -71 - -<<Struct>> -PocoStorage -contracts/libs/PocoStorageLib.v8.sol - -m_appregistry: IRegistry -m_datasetregistry: IRegistry -m_workerpoolregistry: IRegistry -m_baseToken: IERC20 -m_name: string -m_symbol: string -m_decimals: uint8 -m_totalSupply: uint256 -m_balances: mapping(address=>uint256) -m_frozens: mapping(address=>uint256) -m_allowances: mapping(address=>mapping(address=>uint256)) -m_eip712DomainSeparator: bytes32 -m_presigned: mapping(bytes32=>address) -m_consumed: mapping(bytes32=>uint256) -m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) -m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) -m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) -m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) -m_workerScores: mapping(address=>uint256) -m_teebroker: address -m_callbackgas: uint256 -m_categories: IexecLibCore_v5.Category[] -m_v3_iexecHub: address -m_v3_scoreImported: mapping(address=>bool) -m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) - - + -12->71 - - +5->40 + + + + + +66 + +<<Library>> +PocoStorageLib +contracts/libs/PocoStorageLib.sol + +Private: +   POCO_STORAGE_LOCATION: bytes32 + +Internal: +    getPocoStorage(): ($: PocoStorage) + + + +5->66 + + + + + +67 + +<<Struct>> +PocoStorage +contracts/libs/PocoStorageLib.sol + +m_appregistry: IRegistry +m_datasetregistry: IRegistry +m_workerpoolregistry: IRegistry +m_baseToken: IERC20 +m_name: string +m_symbol: string +m_decimals: uint8 +m_totalSupply: uint256 +m_balances: mapping(address=>uint256) +m_frozens: mapping(address=>uint256) +m_allowances: mapping(address=>mapping(address=>uint256)) +m_eip712DomainSeparator: bytes32 +m_presigned: mapping(bytes32=>address) +m_consumed: mapping(bytes32=>uint256) +m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) +m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) +m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) +m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) +m_workerScores: mapping(address=>uint256) +m_teebroker: address +m_callbackgas: uint256 +m_categories: IexecLibCore_v5.Category[] +m_v3_iexecHub: IexecHubV3Interface +m_v3_scoreImported: mapping(address=>bool) +m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) + + + +5->67 + + + + + +6 + +IexecEscrow +contracts/abstract/IexecEscrow.sol + +Private: +    _transfer(from: address, to: address, value: uint256) +Internal: +    lock(account: address, value: uint256) +    unlock(account: address, value: uint256) +    reward(account: address, value: uint256, ref: bytes32) +    seize(account: address, value: uint256, ref: bytes32) +Public: +    <<event>> Transfer(from: address, to: address, value: uint256) +    <<event>> Lock(owner: address, amount: uint256) +    <<event>> Unlock(owner: address, amount: uint256) +    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) +    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) + + + +6->4 + + + + + +6->66 + + + + + +6->67 + + 13 - -IexecEscrowNativeFacet -contracts/facets/IexecEscrowNativeFacet.sol - -Internal: -   nRLCtoWei: uint256 - -Internal: -    _deposit(target: address) -    _withdraw(to: address, value: uint256) -External: -    <<payable>> null() -    <<payable>> null() -    <<payable>> deposit(): bool -    <<payable>> depositFor(target: address): bool -    <<payable>> depositForArray(amounts: uint256[], targets: address[]): bool -    withdraw(amount: uint256): bool -    withdrawTo(amount: uint256, target: address): bool -    recover(): uint256 <<onlyOwner>> - - - -13->10 - - + +IexecEscrowNativeFacet +contracts/facets/IexecEscrowNativeFacet.sol + +Internal: +   nRLCtoWei: uint256 + +Internal: +    _deposit(target: address) +    _withdraw(to: address, value: uint256) +External: +    <<payable>> null() +    <<payable>> null() +    <<payable>> deposit(): bool +    <<payable>> depositFor(target: address): bool +    <<payable>> depositForArray(amounts: uint256[], targets: address[]): bool +    withdraw(amount: uint256): bool +    withdrawTo(amount: uint256, target: address): bool +    recover(): uint256 <<onlyOwner>> + + + +13->5 + + - + -32 - -<<Interface>> -IexecEscrowNative -contracts/interfaces/IexecEscrowNative.sol - -External: -     null() -     null() -     deposit(): bool -     depositFor(address): bool -     depositForArray(uint256[], address[]): bool -     withdraw(uint256): bool -     withdrawTo(uint256, address): bool -     recover(): uint256 - - - -13->32 - - +29 + +<<Interface>> +IexecEscrowNative +contracts/interfaces/IexecEscrowNative.sol + +External: +     null() +     null() +     deposit(): bool +     depositFor(address): bool +     depositForArray(uint256[], address[]): bool +     withdraw(uint256): bool +     withdrawTo(uint256, address): bool +     recover(): uint256 + + + +13->29 + + + + + +13->66 + + + + + +13->67 + + 14 - -IexecEscrowTokenFacet -contracts/facets/IexecEscrowTokenFacet.sol - -Internal: -    _deposit(from: address, amount: uint256) -    _withdraw(to: address, amount: uint256) -External: -    <<payable>> null() -    <<payable>> null() -    deposit(amount: uint256): bool -    depositFor(amount: uint256, target: address): bool -    depositForArray(amounts: uint256[], targets: address[]): bool -    withdraw(amount: uint256): bool -    withdrawTo(amount: uint256, target: address): bool -    recover(): uint256 <<onlyOwner>> -    receiveApproval(sender: address, amount: uint256, token: address, bytes): bool - - - -14->10 - - + +IexecEscrowTokenFacet +contracts/facets/IexecEscrowTokenFacet.sol + +Internal: +    _executeOperation(sender: address, data: bytes) +    _validateMatchOrders(sender: address, data: bytes) +    _deposit(from: address, amount: uint256) +    _withdraw(to: address, amount: uint256) +External: +    <<payable>> null() +    <<payable>> null() +    deposit(amount: uint256): bool +    depositFor(amount: uint256, target: address): bool +    depositForArray(amounts: uint256[], targets: address[]): bool +    withdraw(amount: uint256): bool +    withdrawTo(amount: uint256, target: address): bool +    recover(): uint256 <<onlyOwner>> +    receiveApproval(sender: address, amount: uint256, token: address, data: bytes): bool - + + +14->5 + + + + +30 + +<<Interface>> +IexecEscrowToken +contracts/interfaces/IexecEscrowToken.sol + +External: +     null() +     null() +     deposit(uint256): bool +     depositFor(uint256, address): bool +     depositForArray(uint256[], address[]): bool +     withdraw(uint256): bool +     withdrawTo(uint256, address): bool +     recover(): uint256 + + + +14->30 + + + + + 33 - -<<Interface>> -IexecEscrowToken -contracts/interfaces/IexecEscrowToken.sol - -External: -     null() -     null() -     deposit(uint256): bool -     depositFor(uint256, address): bool -     depositForArray(uint256[], address[]): bool -     withdraw(uint256): bool -     withdrawTo(uint256, address): bool -     recover(): uint256 + +<<Interface>> +IexecPoco1 +contracts/interfaces/IexecPoco1.sol + +External: +     verifySignature(address, bytes32, bytes): bool +     verifyPresignature(address, bytes32): bool +     verifyPresignatureOrSignature(address, bytes32, bytes): bool +     assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) +     matchOrders(IexecLibOrders_v5.AppOrder, IexecLibOrders_v5.DatasetOrder, IexecLibOrders_v5.WorkerpoolOrder, IexecLibOrders_v5.RequestOrder): bytes32 +     sponsorMatchOrders(IexecLibOrders_v5.AppOrder, IexecLibOrders_v5.DatasetOrder, IexecLibOrders_v5.WorkerpoolOrder, IexecLibOrders_v5.RequestOrder): bytes32 +Public: +    <<event>> SchedulerNotice(workerpool: address, dealid: bytes32) +    <<event>> OrdersMatched(dealid: bytes32, appHash: bytes32, datasetHash: bytes32, workerpoolHash: bytes32, requestHash: bytes32, volume: uint256) +    <<event>> DealSponsored(dealId: bytes32, sponsor: address) - + 14->33 - - + + + + + +14->40 + + - + + +55 + +<<Library>> +IexecLibOrders_v5 +contracts/libs/IexecLibOrders_v5.sol + +Public: +   EIP712DOMAIN_TYPEHASH: bytes32 +   APPORDER_TYPEHASH: bytes32 +   DATASETORDER_TYPEHASH: bytes32 +   WORKERPOOLORDER_TYPEHASH: bytes32 +   REQUESTORDER_TYPEHASH: bytes32 +   APPORDEROPERATION_TYPEHASH: bytes32 +   DATASETORDEROPERATION_TYPEHASH: bytes32 +   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 +   REQUESTORDEROPERATION_TYPEHASH: bytes32 + +Public: +    hash(_domain: EIP712Domain): (domainhash: bytes32) +    hash(_apporder: AppOrder): (apphash: bytes32) +    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) +    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) +    hash(_requestorder: RequestOrder): (requesthash: bytes32) +    hash(_apporderoperation: AppOrderOperation): bytes32 +    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 +    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 +    hash(_requestorderoperation: RequestOrderOperation): bytes32 + + + +14->55 + + + + + +14->66 + + + + + +14->67 + + + + -42 - -<<Interface>> -IexecTokenSpender -contracts/interfaces/IexecTokenSpender.sol - -External: -     receiveApproval(address, uint256, address, bytes): bool - - - -14->42 - - +31 + +<<Interface>> +IexecHubV3Interface +contracts/interfaces/IexecHubV3Interface.sol + +External: +     viewScore(worker: address): uint256 - - -25 - -<<Interface>> -IOwnable -contracts/interfaces/IOwnable.sol - -External: -     owner(): address -     renounceOwnership() -     transferOwnership(address) -Public: -    <<event>> OwnershipTransferred(previousOwner: address, newOwner: address) - - - -43 - -<<Library>> -IexecLibCore_v5 -contracts/libs/IexecLibCore_v5.sol + + +33->55 + + - - -70->71 - - + + +58 + +<<Struct>> +AppOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appprice: uint256 +volume: uint256 +tag: bytes32 +datasetrestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes - - -71->43 - - + + +33->58 + + - - -71->70 - - + + +59 + +<<Struct>> +DatasetOrder +contracts/libs/IexecLibOrders_v5.sol + +dataset: address +datasetprice: uint256 +volume: uint256 +tag: bytes32 +apprestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes - - -72 - -<<Interface>> -IRegistry -contracts/libs/PocoStorageLib.v8.sol - -External: -     isRegistered(_entry: address): bool - - - -71->72 - - + + +33->59 + + + + + +60 + +<<Struct>> +WorkerpoolOrder +contracts/libs/IexecLibOrders_v5.sol + +workerpool: address +workerpoolprice: uint256 +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +apprestrict: address +datasetrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes + + + +33->60 + + + + + +61 + +<<Struct>> +RequestOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appmaxprice: uint256 +dataset: address +datasetmaxprice: uint256 +workerpool: address +workerpoolmaxprice: uint256 +requester: address +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +beneficiary: address +callback: address +params: string +salt: bytes32 +sign: bytes + + + +33->61 + + + + + +41 + +<<Library>> +IexecLibCore_v5 +contracts/libs/IexecLibCore_v5.sol + + + +57 + +<<Struct>> +EIP712Domain +contracts/libs/IexecLibOrders_v5.sol + +name: string +version: string +chainId: uint256 +verifyingContract: address + + + +55->57 + + + + + +55->58 + + + + + +55->59 + + + + + +55->60 + + + + + +55->61 + + + + + +62 + +<<Struct>> +AppOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: AppOrder +operation: OrderOperationEnum +sign: bytes + + + +55->62 + + + + + +63 + +<<Struct>> +DatasetOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: DatasetOrder +operation: OrderOperationEnum +sign: bytes + + + +55->63 + + + + + +64 + +<<Struct>> +WorkerpoolOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: WorkerpoolOrder +operation: OrderOperationEnum +sign: bytes + + + +55->64 + + + + + +65 + +<<Struct>> +RequestOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: RequestOrder +operation: OrderOperationEnum +sign: bytes + + + +55->65 + + + + + +56 + +<<Enum>> +OrderOperationEnum +contracts/libs/IexecLibOrders_v5.sol + +SIGN: 0 +CLOSE: 1 + + + +56->55 + + + + + +57->55 + + + + + +58->55 + + + + + +59->55 + + + + + +60->55 + + + + + +61->55 + + + + + +62->55 + + + + + +62->56 + + + + + +62->58 + + + + + +63->55 + + + + + +63->56 + + + + + +63->59 + + + + + +64->55 + + + + + +64->56 + + + + + +64->60 + + + + + +65->55 + + + + + +65->56 + + + + + +65->61 + + + + + +66->67 + + + + + +67->31 + + + + + +67->41 + + + + + +67->66 + + + + + +68 + +<<Interface>> +IRegistry +contracts/registries/IRegistry.sol + +External: +     isRegistered(_entry: address): bool + + + +67->68 + + diff --git a/docs/uml/class-uml-IexecPocoBoostFacet.svg b/docs/uml/class-uml-IexecPocoBoostFacet.svg index 57c11163..fbebe21c 100644 --- a/docs/uml/class-uml-IexecPocoBoostFacet.svg +++ b/docs/uml/class-uml-IexecPocoBoostFacet.svg @@ -4,857 +4,879 @@ - + UmlClassDiagram - - + + -77 - -<<Interface>> -IOracleConsumer -contracts/external/interfaces/IOracleConsumer.sol - -External: -     receiveResult(taskId: bytes32, resultsCallback: bytes) - - +4 + +<<Abstract>> +FacetBase +contracts/abstract/FacetBase.sol + +Internal: +   CONTRIBUTION_DEADLINE_RATIO: uint256 +   REVEAL_DEADLINE_RATIO: uint256 +   FINAL_DEADLINE_RATIO: uint256 +   WORKERPOOL_STAKE_RATIO: uint256 +   KITTY_RATIO: uint256 +   KITTY_MIN: uint256 +   KITTY_ADDRESS: address +   GROUPMEMBER_PURPOSE: uint256 + +Internal: +    owner(): address +    _msgSender(): address +Public: +    <<modifier>> onlyOwner() + + -5 - -<<Abstract>> -FacetBase -contracts/facets/FacetBase.v8.sol - -Internal: -   CONTRIBUTION_DEADLINE_RATIO: uint256 -   REVEAL_DEADLINE_RATIO: uint256 -   FINAL_DEADLINE_RATIO: uint256 -   WORKERPOOL_STAKE_RATIO: uint256 -   KITTY_RATIO: uint256 -   KITTY_MIN: uint256 -   KITTY_ADDRESS: address -   GROUPMEMBER_PURPOSE: uint256 - -Internal: -    _msgSender(): address - - - -12 - -IexecEscrow -contracts/facets/IexecEscrow.v8.sol - -Private: -    _transfer(from: address, to: address, value: uint256) -Internal: -    lock(account: address, value: uint256) -    unlock(account: address, value: uint256) -    reward(account: address, value: uint256, ref: bytes32) -    seize(account: address, value: uint256, ref: bytes32) -Public: -    <<event>> Transfer(from: address, to: address, value: uint256) -    <<event>> Lock(owner: address, amount: uint256) -    <<event>> Unlock(owner: address, amount: uint256) -    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) -    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) - - +6 + +IexecEscrow +contracts/abstract/IexecEscrow.sol + +Private: +    _transfer(from: address, to: address, value: uint256) +Internal: +    lock(account: address, value: uint256) +    unlock(account: address, value: uint256) +    reward(account: address, value: uint256, ref: bytes32) +    seize(account: address, value: uint256, ref: bytes32) +Public: +    <<event>> Transfer(from: address, to: address, value: uint256) +    <<event>> Lock(owner: address, amount: uint256) +    <<event>> Unlock(owner: address, amount: uint256) +    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) +    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) + + -12->5 - - +6->4 + + - - -70 - -<<Library>> -PocoStorageLib -contracts/libs/PocoStorageLib.v8.sol - -Private: -   POCO_STORAGE_LOCATION: bytes32 - -Internal: -    getPocoStorage(): ($: PocoStorage) - - + + +66 + +<<Library>> +PocoStorageLib +contracts/libs/PocoStorageLib.sol + +Private: +   POCO_STORAGE_LOCATION: bytes32 + +Internal: +    getPocoStorage(): ($: PocoStorage) + + -12->70 - - +6->66 + + - - -71 - -<<Struct>> -PocoStorage -contracts/libs/PocoStorageLib.v8.sol - -m_appregistry: IRegistry -m_datasetregistry: IRegistry -m_workerpoolregistry: IRegistry -m_baseToken: IERC20 -m_name: string -m_symbol: string -m_decimals: uint8 -m_totalSupply: uint256 -m_balances: mapping(address=>uint256) -m_frozens: mapping(address=>uint256) -m_allowances: mapping(address=>mapping(address=>uint256)) -m_eip712DomainSeparator: bytes32 -m_presigned: mapping(bytes32=>address) -m_consumed: mapping(bytes32=>uint256) -m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) -m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) -m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) -m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) -m_workerScores: mapping(address=>uint256) -m_teebroker: address -m_callbackgas: uint256 -m_categories: IexecLibCore_v5.Category[] -m_v3_iexecHub: address -m_v3_scoreImported: mapping(address=>bool) -m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) - - + + +67 + +<<Struct>> +PocoStorage +contracts/libs/PocoStorageLib.sol + +m_appregistry: IRegistry +m_datasetregistry: IRegistry +m_workerpoolregistry: IRegistry +m_baseToken: IERC20 +m_name: string +m_symbol: string +m_decimals: uint8 +m_totalSupply: uint256 +m_balances: mapping(address=>uint256) +m_frozens: mapping(address=>uint256) +m_allowances: mapping(address=>mapping(address=>uint256)) +m_eip712DomainSeparator: bytes32 +m_presigned: mapping(bytes32=>address) +m_consumed: mapping(bytes32=>uint256) +m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) +m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) +m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) +m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) +m_workerScores: mapping(address=>uint256) +m_teebroker: address +m_callbackgas: uint256 +m_categories: IexecLibCore_v5.Category[] +m_v3_iexecHub: IexecHubV3Interface +m_v3_scoreImported: mapping(address=>bool) +m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) + + -12->71 - - +6->67 + + - - -21 - -IexecPocoBoostFacet -contracts/facets/IexecPocoBoostFacet.sol - -Private: -    _matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder, sponsor: address): bytes32 -    requireTaskExistsAndUnset(taskStatus: IexecLibCore_v5.TaskStatusEnum, taskIndex: uint256, botSize: uint16) -External: -    matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 -    sponsorMatchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 -    pushResultBoost(dealId: bytes32, index: uint256, results: bytes, resultsCallback: bytes, authorizationSign: bytes, enclaveChallenge: address, enclaveSign: bytes) -    claimBoost(dealId: bytes32, index: uint256) - - - -21->77 - - + + +7 + +<<Abstract>> +IexecPocoCommon +contracts/abstract/IexecPocoCommon.sol + +Internal: +    _computeDealVolume(appOrderVolume: uint256, appOrderTypedDataHash: bytes32, hasDataset: bool, datasetOrderVolume: uint256, datasetOrderTypedDataHash: bytes32, workerpoolOrderVolume: uint256, workerpoolOrderTypedDataHash: bytes32, requestOrderVolume: uint256, requestOrderTypedDataHash: bytes32): uint256 + + + +7->4 + + - + + +55 + +<<Library>> +IexecLibOrders_v5 +contracts/libs/IexecLibOrders_v5.sol + +Public: +   EIP712DOMAIN_TYPEHASH: bytes32 +   APPORDER_TYPEHASH: bytes32 +   DATASETORDER_TYPEHASH: bytes32 +   WORKERPOOLORDER_TYPEHASH: bytes32 +   REQUESTORDER_TYPEHASH: bytes32 +   APPORDEROPERATION_TYPEHASH: bytes32 +   DATASETORDEROPERATION_TYPEHASH: bytes32 +   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 +   REQUESTORDEROPERATION_TYPEHASH: bytes32 + +Public: +    hash(_domain: EIP712Domain): (domainhash: bytes32) +    hash(_apporder: AppOrder): (apphash: bytes32) +    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) +    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) +    hash(_requestorder: RequestOrder): (requesthash: bytes32) +    hash(_apporderoperation: AppOrderOperation): bytes32 +    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 +    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 +    hash(_requestorderoperation: RequestOrderOperation): bytes32 + + -21->5 - - +7->55 + + - + -21->12 - - +7->66 + + - - -22 - -IexecPocoCommon -contracts/facets/IexecPocoCommon.sol - -Internal: -    _computeDealVolume(appOrderVolume: uint256, appOrderTypedDataHash: bytes32, hasDataset: bool, datasetOrderVolume: uint256, datasetOrderTypedDataHash: bytes32, workerpoolOrderVolume: uint256, workerpoolOrderTypedDataHash: bytes32, requestOrderVolume: uint256, requestOrderTypedDataHash: bytes32): uint256 - - + + +7->67 + + + + + +8 + +<<Abstract>> +SignatureVerifier +contracts/abstract/SignatureVerifier.sol + +Internal: +    _toTypedDataHash(structHash: bytes32): bytes32 +    _verifySignatureOfEthSignedMessage(account: address, message: bytes, signature: bytes): bool +    _verifySignature(account: address, messageHash: bytes32, signature: bytes): bool +    _verifyPresignature(account: address, messageHash: bytes32): bool +    _verifySignatureOrPresignature(account: address, messageHash: bytes32, signature: bytes): bool +    _isAccountAuthorizedByRestriction(restriction: address, account: address): bool + + -21->22 - - +8->4 + + - + + +8->66 + + + + + +8->67 + + + + + +72 + +<<Interface>> +IOracleConsumer +contracts/external/interfaces/IOracleConsumer.sol + +External: +     receiveResult(taskId: bytes32, resultsCallback: bytes) + + -24 - -SignatureVerifier -contracts/facets/SignatureVerifier.sol - -Internal: -    _toTypedDataHash(structHash: bytes32): bytes32 -    _verifySignatureOfEthSignedMessage(account: address, message: bytes, signature: bytes): bool -    _verifySignature(account: address, messageHash: bytes32, signature: bytes): bool -    _verifyPresignature(account: address, messageHash: bytes32): bool -    _verifySignatureOrPresignature(account: address, messageHash: bytes32, signature: bytes): bool -    _isAccountAuthorizedByRestriction(restriction: address, account: address): bool - - - -21->24 - - +21 + +IexecPocoBoostFacet +contracts/facets/IexecPocoBoostFacet.sol + +Private: +    _matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder, sponsor: address): bytes32 +    requireTaskExistsAndUnset(taskStatus: IexecLibCore_v5.TaskStatusEnum, taskIndex: uint256, botSize: uint16) +External: +    matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 +    sponsorMatchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 +    pushResultBoost(dealId: bytes32, index: uint256, results: bytes, resultsCallback: bytes, authorizationSign: bytes, enclaveChallenge: address, enclaveSign: bytes) +    claimBoost(dealId: bytes32, index: uint256) + + + +21->4 + + - - -39 - -<<Interface>> -IexecPocoBoost -contracts/interfaces/IexecPocoBoost.sol - -External: -     matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 -     sponsorMatchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 -     pushResultBoost(dealId: bytes32, index: uint256, results: bytes, resultsCallback: bytes, authorizationSign: bytes, enclaveChallenge: address, enclaveSign: bytes) -     claimBoost(dealId: bytes32, index: uint256) -Public: -    <<event>> SchedulerNoticeBoost(workerpool: address, dealId: bytes32, app: address, dataset: address, category: uint256, tag: bytes32, params: string, beneficiary: address) -    <<event>> OrdersMatched(dealid: bytes32, appHash: bytes32, datasetHash: bytes32, workerpoolHash: bytes32, requestHash: bytes32, volume: uint256) -    <<event>> ResultPushedBoost(dealId: bytes32, index: uint256, results: bytes) -    <<event>> TaskClaimed(taskid: bytes32) -    <<event>> DealSponsoredBoost(dealId: bytes32, sponsor: address) - - - -21->39 - - + + +21->6 + + - + + +21->7 + + + + + +21->8 + + + + + +21->72 + + + + -43 - -<<Library>> -IexecLibCore_v5 -contracts/libs/IexecLibCore_v5.sol +37 + +<<Interface>> +IexecPocoBoost +contracts/interfaces/IexecPocoBoost.sol + +External: +     matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 +     sponsorMatchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 +     pushResultBoost(dealId: bytes32, index: uint256, results: bytes, resultsCallback: bytes, authorizationSign: bytes, enclaveChallenge: address, enclaveSign: bytes) +     claimBoost(dealId: bytes32, index: uint256) +Public: +    <<event>> SchedulerNoticeBoost(workerpool: address, dealId: bytes32, app: address, dataset: address, category: uint256, tag: bytes32, params: string, beneficiary: address) +    <<event>> OrdersMatched(dealid: bytes32, appHash: bytes32, datasetHash: bytes32, workerpoolHash: bytes32, requestHash: bytes32, volume: uint256) +    <<event>> ResultPushedBoost(dealId: bytes32, index: uint256, results: bytes) +    <<event>> TaskClaimed(taskid: bytes32) +    <<event>> DealSponsoredBoost(dealId: bytes32, sponsor: address) + + + +21->37 + + - - -21->43 - - + + +41 + +<<Library>> +IexecLibCore_v5 +contracts/libs/IexecLibCore_v5.sol + + + +21->41 + + + + + +49 + +<<Struct>> +DealBoost +contracts/libs/IexecLibCore_v5.sol + +appOwner: address +appPrice: uint96 +datasetOwner: address +datasetPrice: uint96 +workerpoolOwner: address +workerpoolPrice: uint96 +requester: address +workerReward: uint96 +callback: address +deadline: uint40 +botFirst: uint16 +botSize: uint16 +shortTag: bytes3 +sponsor: address + + + +21->49 + + + + + +50 + +<<Enum>> +TaskStatusEnum +contracts/libs/IexecLibCore_v5.sol + +UNSET: 0 +ACTIVE: 1 +REVEALING: 2 +COMPLETED: 3 +FAILED: 4 + + + +21->50 + + - + 51 - -<<Struct>> -DealBoost -contracts/libs/IexecLibCore_v5.sol - -appOwner: address -appPrice: uint96 -datasetOwner: address -datasetPrice: uint96 -workerpoolOwner: address -workerpoolPrice: uint96 -requester: address -workerReward: uint96 -callback: address -deadline: uint40 -botFirst: uint16 -botSize: uint16 -shortTag: bytes3 -sponsor: address + +<<Struct>> +Task +contracts/libs/IexecLibCore_v5.sol + +status: TaskStatusEnum +dealid: bytes32 +idx: uint256 +timeref: uint256 +contributionDeadline: uint256 +revealDeadline: uint256 +finalDeadline: uint256 +consensusValue: bytes32 +revealCounter: uint256 +winnerCounter: uint256 +contributors: address[] +resultDigest: bytes32 +results: bytes +resultsTimestamp: uint256 +resultsCallback: bytes - + 21->51 - - + + - - -52 - -<<Enum>> -TaskStatusEnum -contracts/libs/IexecLibCore_v5.sol - -UNSET: 0 -ACTIVE: 1 -REVEALING: 2 -COMPLETED: 3 -FAILED: 4 - - - -21->52 - - + + +21->55 + + - - -53 - -<<Struct>> -Task -contracts/libs/IexecLibCore_v5.sol - -status: TaskStatusEnum -dealid: bytes32 -idx: uint256 -timeref: uint256 -contributionDeadline: uint256 -revealDeadline: uint256 -finalDeadline: uint256 -consensusValue: bytes32 -revealCounter: uint256 -winnerCounter: uint256 -contributors: address[] -resultDigest: bytes32 -results: bytes -resultsTimestamp: uint256 -resultsCallback: bytes - - - -21->53 - - + + +58 + +<<Struct>> +AppOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appprice: uint256 +volume: uint256 +tag: bytes32 +datasetrestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes + + + +21->58 + + - - -57 - -<<Library>> -IexecLibOrders_v5 -contracts/libs/IexecLibOrders_v5.sol - -Public: -   EIP712DOMAIN_TYPEHASH: bytes32 -   APPORDER_TYPEHASH: bytes32 -   DATASETORDER_TYPEHASH: bytes32 -   WORKERPOOLORDER_TYPEHASH: bytes32 -   REQUESTORDER_TYPEHASH: bytes32 -   APPORDEROPERATION_TYPEHASH: bytes32 -   DATASETORDEROPERATION_TYPEHASH: bytes32 -   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 -   REQUESTORDEROPERATION_TYPEHASH: bytes32 - -Public: -    hash(_domain: EIP712Domain): (domainhash: bytes32) -    hash(_apporder: AppOrder): (apphash: bytes32) -    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) -    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) -    hash(_requestorder: RequestOrder): (requesthash: bytes32) -    hash(_apporderoperation: AppOrderOperation): bytes32 -    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 -    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 -    hash(_requestorderoperation: RequestOrderOperation): bytes32 - - - -21->57 - - + + +59 + +<<Struct>> +DatasetOrder +contracts/libs/IexecLibOrders_v5.sol + +dataset: address +datasetprice: uint256 +volume: uint256 +tag: bytes32 +apprestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes + + + +21->59 + + - + 60 - -<<Struct>> -AppOrder -contracts/libs/IexecLibOrders_v5.sol - -app: address -appprice: uint256 -volume: uint256 -tag: bytes32 -datasetrestrict: address -workerpoolrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +WorkerpoolOrder +contracts/libs/IexecLibOrders_v5.sol + +workerpool: address +workerpoolprice: uint256 +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +apprestrict: address +datasetrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes - + 21->60 - - + + - + 61 - -<<Struct>> -DatasetOrder -contracts/libs/IexecLibOrders_v5.sol - -dataset: address -datasetprice: uint256 -volume: uint256 -tag: bytes32 -apprestrict: address -workerpoolrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +RequestOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appmaxprice: uint256 +dataset: address +datasetmaxprice: uint256 +workerpool: address +workerpoolmaxprice: uint256 +requester: address +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +beneficiary: address +callback: address +params: string +salt: bytes32 +sign: bytes - + 21->61 - - - - - -62 - -<<Struct>> -WorkerpoolOrder -contracts/libs/IexecLibOrders_v5.sol - -workerpool: address -workerpoolprice: uint256 -volume: uint256 -tag: bytes32 -category: uint256 -trust: uint256 -apprestrict: address -datasetrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes - - - -21->62 - - - - - -63 - -<<Struct>> -RequestOrder -contracts/libs/IexecLibOrders_v5.sol - -app: address -appmaxprice: uint256 -dataset: address -datasetmaxprice: uint256 -workerpool: address -workerpoolmaxprice: uint256 -requester: address -volume: uint256 -tag: bytes32 -category: uint256 -trust: uint256 -beneficiary: address -callback: address -params: string -salt: bytes32 -sign: bytes - - - -21->63 - - - - - -21->70 - - - - - -21->71 - - + + - - -84 - -<<Interface>> -IWorkerpool -contracts/registries/workerpools/IWorkerpool.v8.sol - -External: -     owner(): address -     m_workerpoolDescription(): string -     m_schedulerRewardRatioPolicy(): uint256 -     m_workerStakeRatioPolicy(): uint256 - - - -21->84 - - + + +21->66 + + - + -22->5 - - - - - -22->57 - - - - - -22->70 - - - - +21->67 + + + + + +83 + +<<Interface>> +IWorkerpool +contracts/registries/workerpools/IWorkerpool.v8.sol + +External: +     owner(): address +     m_workerpoolDescription(): string +     m_schedulerRewardRatioPolicy(): uint256 +     m_workerStakeRatioPolicy(): uint256 + + -22->71 - - - - - -24->5 - - - - - -24->70 - - - - - -24->71 - - +21->83 + + - + + +31 + +<<Interface>> +IexecHubV3Interface +contracts/interfaces/IexecHubV3Interface.sol + +External: +     viewScore(worker: address): uint256 + + -39->57 - - +37->55 + + - + -39->60 - - +37->58 + + - + -39->61 - - +37->59 + + - + -39->62 - - +37->60 + + - + -39->63 - - +37->61 + + - + -51->43 - - +49->41 + + - + -52->43 - - +50->41 + + - + -53->43 - - +51->41 + + - + -53->52 - - +51->50 + + - - -59 - -<<Struct>> -EIP712Domain -contracts/libs/IexecLibOrders_v5.sol - -name: string -version: string -chainId: uint256 -verifyingContract: address - - + + +57 + +<<Struct>> +EIP712Domain +contracts/libs/IexecLibOrders_v5.sol + +name: string +version: string +chainId: uint256 +verifyingContract: address + + -57->59 - - +55->57 + + - + -57->60 - - +55->58 + + - + -57->61 - - +55->59 + + - + -57->62 - - +55->60 + + - + -57->63 - - +55->61 + + - - -64 - -<<Struct>> -AppOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: AppOrder -operation: OrderOperationEnum -sign: bytes - - + + +62 + +<<Struct>> +AppOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: AppOrder +operation: OrderOperationEnum +sign: bytes + + -57->64 - - +55->62 + + - - -65 - -<<Struct>> -DatasetOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: DatasetOrder -operation: OrderOperationEnum -sign: bytes - - + + +63 + +<<Struct>> +DatasetOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: DatasetOrder +operation: OrderOperationEnum +sign: bytes + + -57->65 - - +55->63 + + - - -66 - -<<Struct>> -WorkerpoolOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: WorkerpoolOrder -operation: OrderOperationEnum -sign: bytes - - + + +64 + +<<Struct>> +WorkerpoolOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: WorkerpoolOrder +operation: OrderOperationEnum +sign: bytes + + -57->66 - - +55->64 + + - - -67 - -<<Struct>> -RequestOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: RequestOrder -operation: OrderOperationEnum -sign: bytes - - + + +65 + +<<Struct>> +RequestOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: RequestOrder +operation: OrderOperationEnum +sign: bytes + + -57->67 - - +55->65 + + - - -58 - -<<Enum>> -OrderOperationEnum -contracts/libs/IexecLibOrders_v5.sol - -SIGN: 0 -CLOSE: 1 - - + + +56 + +<<Enum>> +OrderOperationEnum +contracts/libs/IexecLibOrders_v5.sol + +SIGN: 0 +CLOSE: 1 + + -58->57 - - +56->55 + + - + -59->57 - - +57->55 + + - + -60->57 - - +58->55 + + - + -61->57 - - +59->55 + + - + -62->57 - - +60->55 + + - + -63->57 - - +61->55 + + - + -64->57 - - +62->55 + + - + -64->58 - - +62->56 + + - + -64->60 - - +62->58 + + - + -65->57 - - +63->55 + + - + -65->58 - - +63->56 + + - + -65->61 - - +63->59 + + - + -66->57 - - +64->55 + + - + -66->58 - - +64->56 + + - + -66->62 - - +64->60 + + - + -67->57 - - +65->55 + + - + -67->58 - - +65->56 + + - + -67->63 - - +65->61 + + - + -70->71 - - +66->67 + + + + + +67->31 + + - + -71->43 - - +67->41 + + - + -71->70 - - +67->66 + + - - -72 - -<<Interface>> -IRegistry -contracts/libs/PocoStorageLib.v8.sol - -External: -     isRegistered(_entry: address): bool - - + + +68 + +<<Interface>> +IRegistry +contracts/registries/IRegistry.sol + +External: +     isRegistered(_entry: address): bool + + -71->72 - - +67->68 + + diff --git a/docs/uml/class-uml-IexecPocoFacets.svg b/docs/uml/class-uml-IexecPocoFacets.svg index 1bf0a710..f01e3263 100644 --- a/docs/uml/class-uml-IexecPocoFacets.svg +++ b/docs/uml/class-uml-IexecPocoFacets.svg @@ -4,1078 +4,1100 @@ - + UmlClassDiagram - - + + -5 - -<<Abstract>> -FacetBase -contracts/facets/FacetBase.v8.sol - -Internal: -   CONTRIBUTION_DEADLINE_RATIO: uint256 -   REVEAL_DEADLINE_RATIO: uint256 -   FINAL_DEADLINE_RATIO: uint256 -   WORKERPOOL_STAKE_RATIO: uint256 -   KITTY_RATIO: uint256 -   KITTY_MIN: uint256 -   KITTY_ADDRESS: address -   GROUPMEMBER_PURPOSE: uint256 - -Internal: -    _msgSender(): address - - +4 + +<<Abstract>> +FacetBase +contracts/abstract/FacetBase.sol + +Internal: +   CONTRIBUTION_DEADLINE_RATIO: uint256 +   REVEAL_DEADLINE_RATIO: uint256 +   FINAL_DEADLINE_RATIO: uint256 +   WORKERPOOL_STAKE_RATIO: uint256 +   KITTY_RATIO: uint256 +   KITTY_MIN: uint256 +   KITTY_ADDRESS: address +   GROUPMEMBER_PURPOSE: uint256 + +Internal: +    owner(): address +    _msgSender(): address +Public: +    <<modifier>> onlyOwner() + + -12 - -IexecEscrow -contracts/facets/IexecEscrow.v8.sol - -Private: -    _transfer(from: address, to: address, value: uint256) -Internal: -    lock(account: address, value: uint256) -    unlock(account: address, value: uint256) -    reward(account: address, value: uint256, ref: bytes32) -    seize(account: address, value: uint256, ref: bytes32) -Public: -    <<event>> Transfer(from: address, to: address, value: uint256) -    <<event>> Lock(owner: address, amount: uint256) -    <<event>> Unlock(owner: address, amount: uint256) -    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) -    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) - - +6 + +IexecEscrow +contracts/abstract/IexecEscrow.sol + +Private: +    _transfer(from: address, to: address, value: uint256) +Internal: +    lock(account: address, value: uint256) +    unlock(account: address, value: uint256) +    reward(account: address, value: uint256, ref: bytes32) +    seize(account: address, value: uint256, ref: bytes32) +Public: +    <<event>> Transfer(from: address, to: address, value: uint256) +    <<event>> Lock(owner: address, amount: uint256) +    <<event>> Unlock(owner: address, amount: uint256) +    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) +    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) + + -12->5 - - +6->4 + + - - -70 - -<<Library>> -PocoStorageLib -contracts/libs/PocoStorageLib.v8.sol - -Private: -   POCO_STORAGE_LOCATION: bytes32 - -Internal: -    getPocoStorage(): ($: PocoStorage) - - + + +66 + +<<Library>> +PocoStorageLib +contracts/libs/PocoStorageLib.sol + +Private: +   POCO_STORAGE_LOCATION: bytes32 + +Internal: +    getPocoStorage(): ($: PocoStorage) + + -12->70 - - +6->66 + + - - -71 - -<<Struct>> -PocoStorage -contracts/libs/PocoStorageLib.v8.sol - -m_appregistry: IRegistry -m_datasetregistry: IRegistry -m_workerpoolregistry: IRegistry -m_baseToken: IERC20 -m_name: string -m_symbol: string -m_decimals: uint8 -m_totalSupply: uint256 -m_balances: mapping(address=>uint256) -m_frozens: mapping(address=>uint256) -m_allowances: mapping(address=>mapping(address=>uint256)) -m_eip712DomainSeparator: bytes32 -m_presigned: mapping(bytes32=>address) -m_consumed: mapping(bytes32=>uint256) -m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) -m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) -m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) -m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) -m_workerScores: mapping(address=>uint256) -m_teebroker: address -m_callbackgas: uint256 -m_categories: IexecLibCore_v5.Category[] -m_v3_iexecHub: address -m_v3_scoreImported: mapping(address=>bool) -m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) - - + + +67 + +<<Struct>> +PocoStorage +contracts/libs/PocoStorageLib.sol + +m_appregistry: IRegistry +m_datasetregistry: IRegistry +m_workerpoolregistry: IRegistry +m_baseToken: IERC20 +m_name: string +m_symbol: string +m_decimals: uint8 +m_totalSupply: uint256 +m_balances: mapping(address=>uint256) +m_frozens: mapping(address=>uint256) +m_allowances: mapping(address=>mapping(address=>uint256)) +m_eip712DomainSeparator: bytes32 +m_presigned: mapping(bytes32=>address) +m_consumed: mapping(bytes32=>uint256) +m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) +m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) +m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) +m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) +m_workerScores: mapping(address=>uint256) +m_teebroker: address +m_callbackgas: uint256 +m_categories: IexecLibCore_v5.Category[] +m_v3_iexecHub: IexecHubV3Interface +m_v3_scoreImported: mapping(address=>bool) +m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) + + -12->71 - - +6->67 + + - + +7 + +<<Abstract>> +IexecPocoCommon +contracts/abstract/IexecPocoCommon.sol + +Internal: +    _computeDealVolume(appOrderVolume: uint256, appOrderTypedDataHash: bytes32, hasDataset: bool, datasetOrderVolume: uint256, datasetOrderTypedDataHash: bytes32, workerpoolOrderVolume: uint256, workerpoolOrderTypedDataHash: bytes32, requestOrderVolume: uint256, requestOrderTypedDataHash: bytes32): uint256 + + + +7->4 + + + + + +55 + +<<Library>> +IexecLibOrders_v5 +contracts/libs/IexecLibOrders_v5.sol + +Public: +   EIP712DOMAIN_TYPEHASH: bytes32 +   APPORDER_TYPEHASH: bytes32 +   DATASETORDER_TYPEHASH: bytes32 +   WORKERPOOLORDER_TYPEHASH: bytes32 +   REQUESTORDER_TYPEHASH: bytes32 +   APPORDEROPERATION_TYPEHASH: bytes32 +   DATASETORDEROPERATION_TYPEHASH: bytes32 +   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 +   REQUESTORDEROPERATION_TYPEHASH: bytes32 + +Public: +    hash(_domain: EIP712Domain): (domainhash: bytes32) +    hash(_apporder: AppOrder): (apphash: bytes32) +    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) +    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) +    hash(_requestorder: RequestOrder): (requesthash: bytes32) +    hash(_apporderoperation: AppOrderOperation): bytes32 +    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 +    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 +    hash(_requestorderoperation: RequestOrderOperation): bytes32 + + + +7->55 + + + + + +7->66 + + + + + +7->67 + + + + + +8 + +<<Abstract>> +SignatureVerifier +contracts/abstract/SignatureVerifier.sol + +Internal: +    _toTypedDataHash(structHash: bytes32): bytes32 +    _verifySignatureOfEthSignedMessage(account: address, message: bytes, signature: bytes): bool +    _verifySignature(account: address, messageHash: bytes32, signature: bytes): bool +    _verifyPresignature(account: address, messageHash: bytes32): bool +    _verifySignatureOrPresignature(account: address, messageHash: bytes32, signature: bytes): bool +    _isAccountAuthorizedByRestriction(restriction: address, account: address): bool + + + +8->4 + + + + + +8->66 + + + + + +8->67 + + + + + 16 - -<<Struct>> -Matching -contracts/facets/IexecPoco1Facet.sol - -apporderHash: bytes32 -appOwner: address -datasetorderHash: bytes32 -datasetOwner: address -workerpoolorderHash: bytes32 -workerpoolOwner: address -requestorderHash: bytes32 -hasDataset: bool + +<<Struct>> +Matching +contracts/facets/IexecPoco1Facet.sol + +apporderHash: bytes32 +appOwner: address +datasetorderHash: bytes32 +datasetOwner: address +workerpoolorderHash: bytes32 +workerpoolOwner: address +requestorderHash: bytes32 +hasDataset: bool - + 17 - -IexecPoco1Facet -contracts/facets/IexecPoco1Facet.sol - -Private: -    _matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder, _sponsor: address): bytes32 -External: -    verifySignature(_identity: address, _hash: bytes32, _signature: bytes): bool -    verifyPresignature(_identity: address, _hash: bytes32): bool -    verifyPresignatureOrSignature(_identity: address, _hash: bytes32, _signature: bytes): bool -    assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) -    matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 -    sponsorMatchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 - - - -17->5 - - + +IexecPoco1Facet +contracts/facets/IexecPoco1Facet.sol + +Private: +    _matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder, _sponsor: address): bytes32 +External: +    verifySignature(_identity: address, _hash: bytes32, _signature: bytes): bool +    verifyPresignature(_identity: address, _hash: bytes32): bool +    verifyPresignatureOrSignature(_identity: address, _hash: bytes32, _signature: bytes): bool +    assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) +    matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 +    sponsorMatchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 + + + +17->4 + + - - -17->12 - - + + +17->6 + + + + + +17->7 + + + + + +17->8 + + - + 17->16 - - + + - - -22 - -IexecPocoCommon -contracts/facets/IexecPocoCommon.sol - -Internal: -    _computeDealVolume(appOrderVolume: uint256, appOrderTypedDataHash: bytes32, hasDataset: bool, datasetOrderVolume: uint256, datasetOrderTypedDataHash: bytes32, workerpoolOrderVolume: uint256, workerpoolOrderTypedDataHash: bytes32, requestOrderVolume: uint256, requestOrderTypedDataHash: bytes32): uint256 - - - -17->22 - - + + +33 + +<<Interface>> +IexecPoco1 +contracts/interfaces/IexecPoco1.sol + +External: +     verifySignature(address, bytes32, bytes): bool +     verifyPresignature(address, bytes32): bool +     verifyPresignatureOrSignature(address, bytes32, bytes): bool +     assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) +     matchOrders(IexecLibOrders_v5.AppOrder, IexecLibOrders_v5.DatasetOrder, IexecLibOrders_v5.WorkerpoolOrder, IexecLibOrders_v5.RequestOrder): bytes32 +     sponsorMatchOrders(IexecLibOrders_v5.AppOrder, IexecLibOrders_v5.DatasetOrder, IexecLibOrders_v5.WorkerpoolOrder, IexecLibOrders_v5.RequestOrder): bytes32 +Public: +    <<event>> SchedulerNotice(workerpool: address, dealid: bytes32) +    <<event>> OrdersMatched(dealid: bytes32, appHash: bytes32, datasetHash: bytes32, workerpoolHash: bytes32, requestHash: bytes32, volume: uint256) +    <<event>> DealSponsored(dealId: bytes32, sponsor: address) + + + +17->33 + + - - -24 - -SignatureVerifier -contracts/facets/SignatureVerifier.sol - -Internal: -    _toTypedDataHash(structHash: bytes32): bytes32 -    _verifySignatureOfEthSignedMessage(account: address, message: bytes, signature: bytes): bool -    _verifySignature(account: address, messageHash: bytes32, signature: bytes): bool -    _verifyPresignature(account: address, messageHash: bytes32): bool -    _verifySignatureOrPresignature(account: address, messageHash: bytes32, signature: bytes): bool -    _isAccountAuthorizedByRestriction(restriction: address, account: address): bool - - - -17->24 - - + + +34 + +<<Interface>> +IexecPoco1Errors +contracts/interfaces/IexecPoco1Errors.sol - - -35 - -<<Interface>> -IexecPoco1 -contracts/interfaces/IexecPoco1.sol - -External: -     verifySignature(address, bytes32, bytes): bool -     verifyPresignature(address, bytes32): bool -     verifyPresignatureOrSignature(address, bytes32, bytes): bool -     assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) -     matchOrders(IexecLibOrders_v5.AppOrder, IexecLibOrders_v5.DatasetOrder, IexecLibOrders_v5.WorkerpoolOrder, IexecLibOrders_v5.RequestOrder): bytes32 -     sponsorMatchOrders(IexecLibOrders_v5.AppOrder, IexecLibOrders_v5.DatasetOrder, IexecLibOrders_v5.WorkerpoolOrder, IexecLibOrders_v5.RequestOrder): bytes32 -Public: -    <<event>> SchedulerNotice(workerpool: address, dealid: bytes32) -    <<event>> OrdersMatched(dealid: bytes32, appHash: bytes32, datasetHash: bytes32, workerpoolHash: bytes32, requestHash: bytes32, volume: uint256) -    <<event>> DealSponsored(dealId: bytes32, sponsor: address) - - - -17->35 - - + + +17->34 + + - - -36 - -<<Interface>> -IexecPoco1Errors -contracts/interfaces/IexecPoco1Errors.sol + + +41 + +<<Library>> +IexecLibCore_v5 +contracts/libs/IexecLibCore_v5.sol - - -17->36 - - + + +17->41 + + - - -43 - -<<Library>> -IexecLibCore_v5 -contracts/libs/IexecLibCore_v5.sol + + +48 + +<<Struct>> +Deal +contracts/libs/IexecLibCore_v5.sol + +app: Resource +dataset: Resource +workerpool: Resource +trust: uint256 +category: uint256 +tag: bytes32 +requester: address +beneficiary: address +callback: address +params: string +startTime: uint256 +botFirst: uint256 +botSize: uint256 +workerStake: uint256 +schedulerRewardRatio: uint256 +sponsor: address + + + +17->48 + + - - -17->43 - - + + +17->55 + + - - -50 - -<<Struct>> -Deal -contracts/libs/IexecLibCore_v5.sol - -app: Resource -dataset: Resource -workerpool: Resource -trust: uint256 -category: uint256 -tag: bytes32 -requester: address -beneficiary: address -callback: address -params: string -startTime: uint256 -botFirst: uint256 -botSize: uint256 -workerStake: uint256 -schedulerRewardRatio: uint256 -sponsor: address - - - -17->50 - - + + +58 + +<<Struct>> +AppOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appprice: uint256 +volume: uint256 +tag: bytes32 +datasetrestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes + + + +17->58 + + - - -57 - -<<Library>> -IexecLibOrders_v5 -contracts/libs/IexecLibOrders_v5.sol - -Public: -   EIP712DOMAIN_TYPEHASH: bytes32 -   APPORDER_TYPEHASH: bytes32 -   DATASETORDER_TYPEHASH: bytes32 -   WORKERPOOLORDER_TYPEHASH: bytes32 -   REQUESTORDER_TYPEHASH: bytes32 -   APPORDEROPERATION_TYPEHASH: bytes32 -   DATASETORDEROPERATION_TYPEHASH: bytes32 -   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 -   REQUESTORDEROPERATION_TYPEHASH: bytes32 - -Public: -    hash(_domain: EIP712Domain): (domainhash: bytes32) -    hash(_apporder: AppOrder): (apphash: bytes32) -    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) -    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) -    hash(_requestorder: RequestOrder): (requesthash: bytes32) -    hash(_apporderoperation: AppOrderOperation): bytes32 -    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 -    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 -    hash(_requestorderoperation: RequestOrderOperation): bytes32 - - - -17->57 - - + + +59 + +<<Struct>> +DatasetOrder +contracts/libs/IexecLibOrders_v5.sol + +dataset: address +datasetprice: uint256 +volume: uint256 +tag: bytes32 +apprestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes + + + +17->59 + + - + 60 - -<<Struct>> -AppOrder -contracts/libs/IexecLibOrders_v5.sol - -app: address -appprice: uint256 -volume: uint256 -tag: bytes32 -datasetrestrict: address -workerpoolrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +WorkerpoolOrder +contracts/libs/IexecLibOrders_v5.sol + +workerpool: address +workerpoolprice: uint256 +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +apprestrict: address +datasetrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes - + 17->60 - - + + - + 61 - -<<Struct>> -DatasetOrder -contracts/libs/IexecLibOrders_v5.sol - -dataset: address -datasetprice: uint256 -volume: uint256 -tag: bytes32 -apprestrict: address -workerpoolrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +RequestOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appmaxprice: uint256 +dataset: address +datasetmaxprice: uint256 +workerpool: address +workerpoolmaxprice: uint256 +requester: address +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +beneficiary: address +callback: address +params: string +salt: bytes32 +sign: bytes - + 17->61 - - - - - -62 - -<<Struct>> -WorkerpoolOrder -contracts/libs/IexecLibOrders_v5.sol - -workerpool: address -workerpoolprice: uint256 -volume: uint256 -tag: bytes32 -category: uint256 -trust: uint256 -apprestrict: address -datasetrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes - - - -17->62 - - - - - -63 - -<<Struct>> -RequestOrder -contracts/libs/IexecLibOrders_v5.sol - -app: address -appmaxprice: uint256 -dataset: address -datasetmaxprice: uint256 -workerpool: address -workerpoolmaxprice: uint256 -requester: address -volume: uint256 -tag: bytes32 -category: uint256 -trust: uint256 -beneficiary: address -callback: address -params: string -salt: bytes32 -sign: bytes - - - -17->63 - - - - - -17->70 - - + + - - -17->71 - - + + +17->66 + + - - -84 - -<<Interface>> -IWorkerpool -contracts/registries/workerpools/IWorkerpool.v8.sol - -External: -     owner(): address -     m_workerpoolDescription(): string -     m_schedulerRewardRatioPolicy(): uint256 -     m_workerStakeRatioPolicy(): uint256 - - + -17->84 - - +17->67 + + + + + +83 + +<<Interface>> +IWorkerpool +contracts/registries/workerpools/IWorkerpool.v8.sol + +External: +     owner(): address +     m_workerpoolDescription(): string +     m_schedulerRewardRatioPolicy(): uint256 +     m_workerStakeRatioPolicy(): uint256 + + + +17->83 + + - + 18 - -IexecPoco2Facet -contracts/facets/IexecPoco2Facet.sol - -Internal: -    successWork(_dealid: bytes32, _taskid: bytes32) -    failedWork(_dealid: bytes32, _taskid: bytes32) -    checkConsensus(_taskid: bytes32, _consensus: bytes32) -    distributeRewards(_taskid: bytes32) -    distributeRewardsFast(_taskid: bytes32) -    executeCallback(_taskid: bytes32, _resultsCallback: bytes) -External: -    contribute(_taskid: bytes32, _resultHash: bytes32, _resultSeal: bytes32, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) -    contributeAndFinalize(_taskid: bytes32, _resultDigest: bytes32, _results: bytes, _resultsCallback: bytes, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) -    reveal(_taskid: bytes32, _resultDigest: bytes32) -    reopen(_taskid: bytes32) <<onlyScheduler>> -    finalize(_taskid: bytes32, _results: bytes, _resultsCallback: bytes) <<onlyScheduler>> -    initializeArray(_dealid: bytes32[], _idx: uint256[]): bool -    claimArray(_taskid: bytes32[]): bool -    initializeAndClaimArray(_dealid: bytes32[], _idx: uint256[]): bool -Public: -    <<modifier>> onlyScheduler(_taskId: bytes32) -    initialize(_dealid: bytes32, idx: uint256): bytes32 -    claim(_taskid: bytes32) - - - -18->5 - - + +IexecPoco2Facet +contracts/facets/IexecPoco2Facet.sol + +Internal: +    successWork(_dealid: bytes32, _taskid: bytes32) +    failedWork(_dealid: bytes32, _taskid: bytes32) +    checkConsensus(_taskid: bytes32, _consensus: bytes32) +    distributeRewards(_taskid: bytes32) +    distributeRewardsFast(_taskid: bytes32) +    executeCallback(_taskid: bytes32, _resultsCallback: bytes) +External: +    contribute(_taskid: bytes32, _resultHash: bytes32, _resultSeal: bytes32, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) +    contributeAndFinalize(_taskid: bytes32, _resultDigest: bytes32, _results: bytes, _resultsCallback: bytes, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) +    reveal(_taskid: bytes32, _resultDigest: bytes32) +    reopen(_taskid: bytes32) <<onlyScheduler>> +    finalize(_taskid: bytes32, _results: bytes, _resultsCallback: bytes) <<onlyScheduler>> +    initializeArray(_dealid: bytes32[], _idx: uint256[]): bool +    claimArray(_taskid: bytes32[]): bool +    initializeAndClaimArray(_dealid: bytes32[], _idx: uint256[]): bool +Public: +    <<modifier>> onlyScheduler(_taskId: bytes32) +    initialize(_dealid: bytes32, idx: uint256): bytes32 +    claim(_taskid: bytes32) + + + +18->4 + + - - -18->12 - - + + +18->6 + + - - -18->24 - - + + +18->8 + + - - -37 - -<<Interface>> -IexecPoco2 -contracts/interfaces/IexecPoco2.sol - -External: -     initialize(dealId: bytes32, index: uint256): bytes32 -     claim(taskId: bytes32) -     contribute(taskId: bytes32, resultHash: bytes32, resultSeal: bytes32, enclaveChallenge: address, enclaveSign: bytes, authorizationSign: bytes) -     contributeAndFinalize(taskId: bytes32, resultDigest: bytes32, results: bytes, resultsCallback: bytes, enclaveChallenge: address, enclaveSign: bytes, authorizationSign: bytes) -     reveal(taskId: bytes32, resultDigest: bytes32) -     reopen(taskId: bytes32) -     finalize(taskId: bytes32, results: bytes, resultsCallback: bytes) -     initializeArray(dealIds: bytes32[], indexes: uint256[]): bool -     claimArray(taskIds: bytes32[]): bool -     initializeAndClaimArray(dealIds: bytes32[], indexes: uint256[]): bool -Public: -    <<event>> AccurateContribution(worker: address, taskid: bytes32) -    <<event>> FaultyContribution(worker: address, taskid: bytes32) -    <<event>> TaskInitialize(taskid: bytes32, workerpool: address) -    <<event>> TaskContribute(taskid: bytes32, worker: address, hash: bytes32) -    <<event>> TaskConsensus(taskid: bytes32, consensus: bytes32) -    <<event>> TaskReveal(taskid: bytes32, worker: address, digest: bytes32) -    <<event>> TaskReopen(taskid: bytes32) -    <<event>> TaskFinalize(taskid: bytes32, results: bytes) -    <<event>> TaskClaimed(taskid: bytes32) - - - -18->37 - - + + +35 + +<<Interface>> +IexecPoco2 +contracts/interfaces/IexecPoco2.sol + +External: +     initialize(dealId: bytes32, index: uint256): bytes32 +     claim(taskId: bytes32) +     contribute(taskId: bytes32, resultHash: bytes32, resultSeal: bytes32, enclaveChallenge: address, enclaveSign: bytes, authorizationSign: bytes) +     contributeAndFinalize(taskId: bytes32, resultDigest: bytes32, results: bytes, resultsCallback: bytes, enclaveChallenge: address, enclaveSign: bytes, authorizationSign: bytes) +     reveal(taskId: bytes32, resultDigest: bytes32) +     reopen(taskId: bytes32) +     finalize(taskId: bytes32, results: bytes, resultsCallback: bytes) +     initializeArray(dealIds: bytes32[], indexes: uint256[]): bool +     claimArray(taskIds: bytes32[]): bool +     initializeAndClaimArray(dealIds: bytes32[], indexes: uint256[]): bool +Public: +    <<event>> AccurateContribution(worker: address, taskid: bytes32) +    <<event>> FaultyContribution(worker: address, taskid: bytes32) +    <<event>> TaskInitialize(taskid: bytes32, workerpool: address) +    <<event>> TaskContribute(taskid: bytes32, worker: address, hash: bytes32) +    <<event>> TaskConsensus(taskid: bytes32, consensus: bytes32) +    <<event>> TaskReveal(taskid: bytes32, worker: address, digest: bytes32) +    <<event>> TaskReopen(taskid: bytes32) +    <<event>> TaskFinalize(taskid: bytes32, results: bytes) +    <<event>> TaskClaimed(taskid: bytes32) + + + +18->35 + + - - -18->43 - - + + +18->41 + + - - -18->50 - - + + +18->48 + + - - -53 - -<<Struct>> -Task -contracts/libs/IexecLibCore_v5.sol - -status: TaskStatusEnum -dealid: bytes32 -idx: uint256 -timeref: uint256 -contributionDeadline: uint256 -revealDeadline: uint256 -finalDeadline: uint256 -consensusValue: bytes32 -revealCounter: uint256 -winnerCounter: uint256 -contributors: address[] -resultDigest: bytes32 -results: bytes -resultsTimestamp: uint256 -resultsCallback: bytes - - - -18->53 - - + + +51 + +<<Struct>> +Task +contracts/libs/IexecLibCore_v5.sol + +status: TaskStatusEnum +dealid: bytes32 +idx: uint256 +timeref: uint256 +contributionDeadline: uint256 +revealDeadline: uint256 +finalDeadline: uint256 +consensusValue: bytes32 +revealCounter: uint256 +winnerCounter: uint256 +contributors: address[] +resultDigest: bytes32 +results: bytes +resultsTimestamp: uint256 +resultsCallback: bytes + + + +18->51 + + + + + +52 + +<<Struct>> +Consensus +contracts/libs/IexecLibCore_v5.sol + +group: mapping(bytes32=>uint256) +total: uint256 + + + +18->52 + + - + 54 - -<<Struct>> -Consensus -contracts/libs/IexecLibCore_v5.sol - -group: mapping(bytes32=>uint256) -total: uint256 + +<<Struct>> +Contribution +contracts/libs/IexecLibCore_v5.sol + +status: ContributionStatusEnum +resultHash: bytes32 +resultSeal: bytes32 +enclaveChallenge: address +weight: uint256 - + 18->54 - - + + - - -56 - -<<Struct>> -Contribution -contracts/libs/IexecLibCore_v5.sol - -status: ContributionStatusEnum -resultHash: bytes32 -resultSeal: bytes32 -enclaveChallenge: address -weight: uint256 - - - -18->56 - - - - - -18->70 - - - - - -18->71 - - - - + -22->5 - - +18->66 + + - + -22->57 - - - - - -22->70 - - +18->67 + + - - -22->71 - - - - - -24->5 - - - - - -24->70 - - - - - -24->71 - - - - + + +31 + +<<Interface>> +IexecHubV3Interface +contracts/interfaces/IexecHubV3Interface.sol + +External: +     viewScore(worker: address): uint256 + + -35->57 - - +33->55 + + - + -35->60 - - +33->58 + + - + -35->61 - - +33->59 + + - + -35->62 - - +33->60 + + - + -35->63 - - +33->61 + + - - -49 - -<<Struct>> -Resource -contracts/libs/IexecLibCore_v5.sol - -pointer: address -owner: address -price: uint256 - - + + +47 + +<<Struct>> +Resource +contracts/libs/IexecLibCore_v5.sol + +pointer: address +owner: address +price: uint256 + + -49->43 - - +47->41 + + - + -50->43 - - +48->41 + + - + -50->49 - - +48->47 + + - - -52 - -<<Enum>> -TaskStatusEnum -contracts/libs/IexecLibCore_v5.sol - -UNSET: 0 -ACTIVE: 1 -REVEALING: 2 -COMPLETED: 3 -FAILED: 4 - - + + +50 + +<<Enum>> +TaskStatusEnum +contracts/libs/IexecLibCore_v5.sol + +UNSET: 0 +ACTIVE: 1 +REVEALING: 2 +COMPLETED: 3 +FAILED: 4 + + -52->43 - - +50->41 + + - + -53->43 - - +51->41 + + - + -53->52 - - +51->50 + + - + -54->43 - - +52->41 + + - - -55 - -<<Enum>> -ContributionStatusEnum -contracts/libs/IexecLibCore_v5.sol - -UNSET: 0 -CONTRIBUTED: 1 -PROVED: 2 -REJECTED: 3 - - + + +53 + +<<Enum>> +ContributionStatusEnum +contracts/libs/IexecLibCore_v5.sol + +UNSET: 0 +CONTRIBUTED: 1 +PROVED: 2 +REJECTED: 3 + + -55->43 - - +53->41 + + - + -56->43 - - +54->41 + + - + -56->55 - - +54->53 + + - - -59 - -<<Struct>> -EIP712Domain -contracts/libs/IexecLibOrders_v5.sol - -name: string -version: string -chainId: uint256 -verifyingContract: address - - + + +57 + +<<Struct>> +EIP712Domain +contracts/libs/IexecLibOrders_v5.sol + +name: string +version: string +chainId: uint256 +verifyingContract: address + + -57->59 - - +55->57 + + - + -57->60 - - +55->58 + + - + -57->61 - - +55->59 + + - + -57->62 - - +55->60 + + - + -57->63 - - +55->61 + + - - -64 - -<<Struct>> -AppOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: AppOrder -operation: OrderOperationEnum -sign: bytes - - + + +62 + +<<Struct>> +AppOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: AppOrder +operation: OrderOperationEnum +sign: bytes + + -57->64 - - +55->62 + + - - -65 - -<<Struct>> -DatasetOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: DatasetOrder -operation: OrderOperationEnum -sign: bytes - - + + +63 + +<<Struct>> +DatasetOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: DatasetOrder +operation: OrderOperationEnum +sign: bytes + + -57->65 - - +55->63 + + - - -66 - -<<Struct>> -WorkerpoolOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: WorkerpoolOrder -operation: OrderOperationEnum -sign: bytes - - + + +64 + +<<Struct>> +WorkerpoolOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: WorkerpoolOrder +operation: OrderOperationEnum +sign: bytes + + -57->66 - - +55->64 + + - - -67 - -<<Struct>> -RequestOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: RequestOrder -operation: OrderOperationEnum -sign: bytes - - + + +65 + +<<Struct>> +RequestOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: RequestOrder +operation: OrderOperationEnum +sign: bytes + + -57->67 - - +55->65 + + - - -58 - -<<Enum>> -OrderOperationEnum -contracts/libs/IexecLibOrders_v5.sol - -SIGN: 0 -CLOSE: 1 - - + + +56 + +<<Enum>> +OrderOperationEnum +contracts/libs/IexecLibOrders_v5.sol + +SIGN: 0 +CLOSE: 1 + + -58->57 - - +56->55 + + - + -59->57 - - +57->55 + + - + -60->57 - - +58->55 + + - + -61->57 - - +59->55 + + - + -62->57 - - +60->55 + + - + -63->57 - - +61->55 + + - + -64->57 - - +62->55 + + - + -64->58 - - +62->56 + + - + -64->60 - - +62->58 + + - + -65->57 - - +63->55 + + - + -65->58 - - +63->56 + + - + -65->61 - - +63->59 + + - + -66->57 - - +64->55 + + - + -66->58 - - +64->56 + + - + -66->62 - - +64->60 + + - + -67->57 - - +65->55 + + - + -67->58 - - +65->56 + + - + -67->63 - - +65->61 + + - + -70->71 - - +66->67 + + - + + +67->31 + + + + -71->43 - - +67->41 + + - + -71->70 - - +67->66 + + - - -72 - -<<Interface>> -IRegistry -contracts/libs/PocoStorageLib.v8.sol - -External: -     isRegistered(_entry: address): bool - - + + +68 + +<<Interface>> +IRegistry +contracts/registries/IRegistry.sol + +External: +     isRegistered(_entry: address): bool + + -71->72 - - +67->68 + + diff --git a/docs/uml/class-uml-dir-facets.svg b/docs/uml/class-uml-dir-facets.svg index 9bb07e18..6cd63f47 100644 --- a/docs/uml/class-uml-dir-facets.svg +++ b/docs/uml/class-uml-dir-facets.svg @@ -4,588 +4,275 @@ - - + + UmlClassDiagram - + 0 - -<<Abstract>> -FacetBase -contracts/facets/FacetBase.sol - -Internal: -   CONTRIBUTION_DEADLINE_RATIO: uint256 -   REVEAL_DEADLINE_RATIO: uint256 -   FINAL_DEADLINE_RATIO: uint256 -   WORKERPOOL_STAKE_RATIO: uint256 -   KITTY_RATIO: uint256 -   KITTY_MIN: uint256 -   KITTY_ADDRESS: address -   GROUPMEMBER_PURPOSE: uint256 - -Internal: -    owner(): address -    _msgSender(): address -Public: -    <<modifier>> onlyOwner() + +IexecAccessorsABILegacyFacet +contracts/facets/IexecAccessorsABILegacyFacet.sol + +External: +    viewDealABILegacy_pt1(_id: bytes32): (address, address, uint256, address, address, uint256, address, address, uint256) +    viewDealABILegacy_pt2(_id: bytes32): (uint256, bytes32, address, address, address, string) +    viewConfigABILegacy(_id: bytes32): (uint256, uint256, uint256, uint256, uint256, uint256) +    viewAccountABILegacy(account: address): (uint256, uint256) +    viewTaskABILegacy(_taskid: bytes32): (IexecLibCore_v5.TaskStatusEnum, bytes32, uint256, uint256, uint256, uint256, uint256, bytes32, uint256, uint256, address[], bytes) +    viewContributionABILegacy(_taskid: bytes32, _worker: address): (IexecLibCore_v5.ContributionStatusEnum, bytes32, bytes32, address) +    viewCategoryABILegacy(_catid: uint256): (string, string, uint256) 1 - -<<Abstract>> -FacetBase -contracts/facets/FacetBase.v8.sol - -Internal: -   CONTRIBUTION_DEADLINE_RATIO: uint256 -   REVEAL_DEADLINE_RATIO: uint256 -   FINAL_DEADLINE_RATIO: uint256 -   WORKERPOOL_STAKE_RATIO: uint256 -   KITTY_RATIO: uint256 -   KITTY_MIN: uint256 -   KITTY_ADDRESS: address -   GROUPMEMBER_PURPOSE: uint256 - -Internal: -    _msgSender(): address + +IexecCategoryManagerFacet +contracts/facets/IexecCategoryManagerFacet.sol + +External: +    createCategory(name: string, description: string, workClockTimeRef: uint256): uint256 <<onlyOwner>> 2 - -IexecAccessorsABILegacyFacet -contracts/facets/IexecAccessorsABILegacyFacet.sol - -External: -    viewDealABILegacy_pt1(_id: bytes32): (address, address, uint256, address, address, uint256, address, address, uint256) -    viewDealABILegacy_pt2(_id: bytes32): (uint256, bytes32, address, address, address, string) -    viewConfigABILegacy(_id: bytes32): (uint256, uint256, uint256, uint256, uint256, uint256) -    viewAccountABILegacy(account: address): (uint256, uint256) -    viewTaskABILegacy(_taskid: bytes32): (IexecLibCore_v5.TaskStatusEnum, bytes32, uint256, uint256, uint256, uint256, uint256, bytes32, uint256, uint256, address[], bytes) -    viewContributionABILegacy(_taskid: bytes32, _worker: address): (IexecLibCore_v5.ContributionStatusEnum, bytes32, bytes32, address) -    viewCategoryABILegacy(_catid: uint256): (string, string, uint256) - - - -2->0 - - + +IexecConfigurationExtraFacet +contracts/facets/IexecConfigurationExtraFacet.sol + +External: +    changeRegistries(_appregistryAddress: address, _datasetregistryAddress: address, _workerpoolregistryAddress: address) <<onlyOwner>> 3 - -IexecCategoryManagerFacet -contracts/facets/IexecCategoryManagerFacet.sol - -External: -    createCategory(name: string, description: string, workClockTimeRef: uint256): uint256 <<onlyOwner>> - - - -3->0 - - + +IexecConfigurationFacet +contracts/facets/IexecConfigurationFacet.sol + +Internal: +    _chainId(): (id: uint256) +    _domain(): IexecLibOrders_v5.EIP712Domain +External: +    configure(_token: address, _name: string, _symbol: string, _decimal: uint8, _appregistryAddress: address, _datasetregistryAddress: address, _workerpoolregistryAddress: address, _v3_iexecHubAddress: address) <<onlyOwner>> +    domain(): IexecLibOrders_v5.EIP712Domain +    updateDomainSeparator() +    importScore(_worker: address) +    setTeeBroker(_teebroker: address) <<onlyOwner>> +    setCallbackGas(_callbackgas: uint256) <<onlyOwner>> 4 - -IexecConfigurationExtraFacet -contracts/facets/IexecConfigurationExtraFacet.sol - -External: -    changeRegistries(_appregistryAddress: address, _datasetregistryAddress: address, _workerpoolregistryAddress: address) <<onlyOwner>> - - - -4->0 - - + +IexecEscrowNativeFacet +contracts/facets/IexecEscrowNativeFacet.sol + +Internal: +   nRLCtoWei: uint256 + +Internal: +    _deposit(target: address) +    _withdraw(to: address, value: uint256) +External: +    <<payable>> null() +    <<payable>> null() +    <<payable>> deposit(): bool +    <<payable>> depositFor(target: address): bool +    <<payable>> depositForArray(amounts: uint256[], targets: address[]): bool +    withdraw(amount: uint256): bool +    withdrawTo(amount: uint256, target: address): bool +    recover(): uint256 <<onlyOwner>> 5 - -IexecConfigurationFacet -contracts/facets/IexecConfigurationFacet.sol - -Internal: -    _chainId(): (id: uint256) -    _domain(): IexecLibOrders_v5.EIP712Domain -External: -    configure(_token: address, _name: string, _symbol: string, _decimal: uint8, _appregistryAddress: address, _datasetregistryAddress: address, _workerpoolregistryAddress: address, _v3_iexecHubAddress: address) <<onlyOwner>> -    domain(): IexecLibOrders_v5.EIP712Domain -    updateDomainSeparator() -    importScore(_worker: address) -    setTeeBroker(_teebroker: address) <<onlyOwner>> -    setCallbackGas(_callbackgas: uint256) <<onlyOwner>> - - - -5->0 - - + +IexecEscrowTokenFacet +contracts/facets/IexecEscrowTokenFacet.sol + +Internal: +    _executeOperation(sender: address, data: bytes) +    _validateMatchOrders(sender: address, data: bytes) +    _deposit(from: address, amount: uint256) +    _withdraw(to: address, amount: uint256) +External: +    <<payable>> null() +    <<payable>> null() +    deposit(amount: uint256): bool +    depositFor(amount: uint256, target: address): bool +    depositForArray(amounts: uint256[], targets: address[]): bool +    withdraw(amount: uint256): bool +    withdrawTo(amount: uint256, target: address): bool +    recover(): uint256 <<onlyOwner>> +    receiveApproval(sender: address, amount: uint256, token: address, data: bytes): bool 6 - -IexecERC20Core -contracts/facets/IexecERC20Core.sol - -Internal: -    _transferUnchecked(sender: address, recipient: address, amount: uint256) -    _transfer(sender: address, recipient: address, amount: uint256) -    _mint(account: address, amount: uint256) -    _burn(account: address, amount: uint256) -    _approve(owner: address, spender: address, amount: uint256) -Public: -    <<event>> Transfer(from: address, to: address, value: uint256) -    <<event>> Approval(owner: address, spender: address, value: uint256) - - - -6->0 - - + +IexecOrderManagementFacet +contracts/facets/IexecOrderManagementFacet.sol + +External: +    manageAppOrder(_apporderoperation: IexecLibOrders_v5.AppOrderOperation) +    manageDatasetOrder(_datasetorderoperation: IexecLibOrders_v5.DatasetOrderOperation) +    manageWorkerpoolOrder(_workerpoolorderoperation: IexecLibOrders_v5.WorkerpoolOrderOperation) +    manageRequestOrder(_requestorderoperation: IexecLibOrders_v5.RequestOrderOperation) 7 - -IexecERC20Facet -contracts/facets/IexecERC20Facet.sol - -External: -    transfer(recipient: address, amount: uint256): bool -    approve(spender: address, value: uint256): bool -    approveAndCall(spender: address, value: uint256, extraData: bytes): bool -    transferFrom(sender: address, recipient: address, amount: uint256): bool -    increaseAllowance(spender: address, addedValue: uint256): bool -    decreaseAllowance(spender: address, subtractedValue: uint256): bool - - - -7->0 - - - - - -7->6 - - + +<<Struct>> +Matching +contracts/facets/IexecPoco1Facet.sol + +apporderHash: bytes32 +appOwner: address +datasetorderHash: bytes32 +datasetOwner: address +workerpoolorderHash: bytes32 +workerpoolOwner: address +requestorderHash: bytes32 +hasDataset: bool 8 - -IexecEscrow -contracts/facets/IexecEscrow.v8.sol - -Private: -    _transfer(from: address, to: address, value: uint256) -Internal: -    lock(account: address, value: uint256) -    unlock(account: address, value: uint256) -    reward(account: address, value: uint256, ref: bytes32) -    seize(account: address, value: uint256, ref: bytes32) -Public: -    <<event>> Transfer(from: address, to: address, value: uint256) -    <<event>> Lock(owner: address, amount: uint256) -    <<event>> Unlock(owner: address, amount: uint256) -    <<event>> Reward(owner: address, amount: uint256, ref: bytes32) -    <<event>> Seize(owner: address, amount: uint256, ref: bytes32) - - - -8->1 - - + +IexecPoco1Facet +contracts/facets/IexecPoco1Facet.sol + +Private: +    _matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder, _sponsor: address): bytes32 +External: +    verifySignature(_identity: address, _hash: bytes32, _signature: bytes): bool +    verifyPresignature(_identity: address, _hash: bytes32): bool +    verifyPresignatureOrSignature(_identity: address, _hash: bytes32, _signature: bytes): bool +    assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) +    matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 +    sponsorMatchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 + + + +8->7 + + 9 - -IexecEscrowNativeFacet -contracts/facets/IexecEscrowNativeFacet.sol - -Internal: -   nRLCtoWei: uint256 - -Internal: -    _deposit(target: address) -    _withdraw(to: address, value: uint256) -External: -    <<payable>> null() -    <<payable>> null() -    <<payable>> deposit(): bool -    <<payable>> depositFor(target: address): bool -    <<payable>> depositForArray(amounts: uint256[], targets: address[]): bool -    withdraw(amount: uint256): bool -    withdrawTo(amount: uint256, target: address): bool -    recover(): uint256 <<onlyOwner>> - - - -9->0 - - - - - -9->6 - - + +IexecPoco2Facet +contracts/facets/IexecPoco2Facet.sol + +Internal: +    successWork(_dealid: bytes32, _taskid: bytes32) +    failedWork(_dealid: bytes32, _taskid: bytes32) +    checkConsensus(_taskid: bytes32, _consensus: bytes32) +    distributeRewards(_taskid: bytes32) +    distributeRewardsFast(_taskid: bytes32) +    executeCallback(_taskid: bytes32, _resultsCallback: bytes) +External: +    contribute(_taskid: bytes32, _resultHash: bytes32, _resultSeal: bytes32, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) +    contributeAndFinalize(_taskid: bytes32, _resultDigest: bytes32, _results: bytes, _resultsCallback: bytes, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) +    reveal(_taskid: bytes32, _resultDigest: bytes32) +    reopen(_taskid: bytes32) <<onlyScheduler>> +    finalize(_taskid: bytes32, _results: bytes, _resultsCallback: bytes) <<onlyScheduler>> +    initializeArray(_dealid: bytes32[], _idx: uint256[]): bool +    claimArray(_taskid: bytes32[]): bool +    initializeAndClaimArray(_dealid: bytes32[], _idx: uint256[]): bool +Public: +    <<modifier>> onlyScheduler(_taskId: bytes32) +    initialize(_dealid: bytes32, idx: uint256): bytes32 +    claim(_taskid: bytes32) 10 - -IexecEscrowTokenFacet -contracts/facets/IexecEscrowTokenFacet.sol - -Internal: -    _deposit(from: address, amount: uint256) -    _withdraw(to: address, amount: uint256) -External: -    <<payable>> null() -    <<payable>> null() -    deposit(amount: uint256): bool -    depositFor(amount: uint256, target: address): bool -    depositForArray(amounts: uint256[], targets: address[]): bool -    withdraw(amount: uint256): bool -    withdrawTo(amount: uint256, target: address): bool -    recover(): uint256 <<onlyOwner>> -    receiveApproval(sender: address, amount: uint256, token: address, bytes): bool - - - -10->0 - - - - - -10->6 - - + +IexecPocoAccessorsFacet +contracts/facets/IexecPocoAccessorsFacet.sol + +External: +    viewDeal(id: bytes32): (deal: IexecLibCore_v5.Deal) +    viewTask(id: bytes32): IexecLibCore_v5.Task +    computeDealVolume(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): uint256 +    viewConsumed(_id: bytes32): (consumed: uint256) +    viewPresigned(_id: bytes32): (signer: address) +    viewContribution(_taskid: bytes32, _worker: address): IexecLibCore_v5.Contribution +    viewScore(_worker: address): uint256 +    resultFor(id: bytes32): bytes +    name(): string +    symbol(): string +    decimals(): uint8 +    totalSupply(): uint256 +    balanceOf(account: address): uint256 +    frozenOf(account: address): uint256 +    allowance(account: address, spender: address): uint256 +    viewAccount(account: address): IexecLibCore_v5.Account +    token(): address +    viewCategory(_catid: uint256): (category: IexecLibCore_v5.Category) +    countCategory(): (count: uint256) +    appregistry(): IRegistry +    datasetregistry(): IRegistry +    workerpoolregistry(): IRegistry +    teebroker(): address +    callbackgas(): uint256 +    viewDataset(dataset: address): IexecLibCore_v5.DatasetInfo +    viewApp(app: address): IexecLibCore_v5.AppInfo +    viewWorkerpool(workerpool: address): IexecLibCore_v5.WorkerpoolInfo +    contribution_deadline_ratio(): uint256 +    reveal_deadline_ratio(): uint256 +    final_deadline_ratio(): uint256 +    workerpool_stake_ratio(): uint256 +    kitty_ratio(): uint256 +    kitty_min(): uint256 +    kitty_address(): address +    groupmember_purpose(): uint256 +    eip712domain_separator(): bytes32 11 - -IexecOrderManagementFacet -contracts/facets/IexecOrderManagementFacet.sol - -External: -    manageAppOrder(_apporderoperation: IexecLibOrders_v5.AppOrderOperation) -    manageDatasetOrder(_datasetorderoperation: IexecLibOrders_v5.DatasetOrderOperation) -    manageWorkerpoolOrder(_workerpoolorderoperation: IexecLibOrders_v5.WorkerpoolOrderOperation) -    manageRequestOrder(_requestorderoperation: IexecLibOrders_v5.RequestOrderOperation) - - - -11->1 - - - - - -20 - -SignatureVerifier -contracts/facets/SignatureVerifier.sol - -Internal: -    _toTypedDataHash(structHash: bytes32): bytes32 -    _verifySignatureOfEthSignedMessage(account: address, message: bytes, signature: bytes): bool -    _verifySignature(account: address, messageHash: bytes32, signature: bytes): bool -    _verifyPresignature(account: address, messageHash: bytes32): bool -    _verifySignatureOrPresignature(account: address, messageHash: bytes32, signature: bytes): bool -    _isAccountAuthorizedByRestriction(restriction: address, account: address): bool - - - -11->20 - - + +IexecPocoBoostAccessorsFacet +contracts/facets/IexecPocoBoostAccessorsFacet.sol + +External: +    viewDealBoost(id: bytes32): (deal: IexecLibCore_v5.DealBoost) 12 - -<<Struct>> -Matching -contracts/facets/IexecPoco1Facet.sol - -apporderHash: bytes32 -appOwner: address -datasetorderHash: bytes32 -datasetOwner: address -workerpoolorderHash: bytes32 -workerpoolOwner: address -requestorderHash: bytes32 -hasDataset: bool + +IexecPocoBoostFacet +contracts/facets/IexecPocoBoostFacet.sol + +Private: +    _matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder, sponsor: address): bytes32 +    requireTaskExistsAndUnset(taskStatus: IexecLibCore_v5.TaskStatusEnum, taskIndex: uint256, botSize: uint16) +External: +    matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 +    sponsorMatchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 +    pushResultBoost(dealId: bytes32, index: uint256, results: bytes, resultsCallback: bytes, authorizationSign: bytes, enclaveChallenge: address, enclaveSign: bytes) +    claimBoost(dealId: bytes32, index: uint256) 13 - -IexecPoco1Facet -contracts/facets/IexecPoco1Facet.sol - -Private: -    _matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder, _sponsor: address): bytes32 -External: -    verifySignature(_identity: address, _hash: bytes32, _signature: bytes): bool -    verifyPresignature(_identity: address, _hash: bytes32): bool -    verifyPresignatureOrSignature(_identity: address, _hash: bytes32, _signature: bytes): bool -    assertDatasetDealCompatibility(datasetOrder: IexecLibOrders_v5.DatasetOrder, dealId: bytes32) -    matchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 -    sponsorMatchOrders(_apporder: IexecLibOrders_v5.AppOrder, _datasetorder: IexecLibOrders_v5.DatasetOrder, _workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder, _requestorder: IexecLibOrders_v5.RequestOrder): bytes32 - - - -13->1 - - - - - -13->8 - - - - - -13->12 - - - - - -18 - -IexecPocoCommon -contracts/facets/IexecPocoCommon.sol - -Internal: -    _computeDealVolume(appOrderVolume: uint256, appOrderTypedDataHash: bytes32, hasDataset: bool, datasetOrderVolume: uint256, datasetOrderTypedDataHash: bytes32, workerpoolOrderVolume: uint256, workerpoolOrderTypedDataHash: bytes32, requestOrderVolume: uint256, requestOrderTypedDataHash: bytes32): uint256 - - - -13->18 - - - - - -13->20 - - - - - -14 - -IexecPoco2Facet -contracts/facets/IexecPoco2Facet.sol - -Internal: -    successWork(_dealid: bytes32, _taskid: bytes32) -    failedWork(_dealid: bytes32, _taskid: bytes32) -    checkConsensus(_taskid: bytes32, _consensus: bytes32) -    distributeRewards(_taskid: bytes32) -    distributeRewardsFast(_taskid: bytes32) -    executeCallback(_taskid: bytes32, _resultsCallback: bytes) -External: -    contribute(_taskid: bytes32, _resultHash: bytes32, _resultSeal: bytes32, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) -    contributeAndFinalize(_taskid: bytes32, _resultDigest: bytes32, _results: bytes, _resultsCallback: bytes, _enclaveChallenge: address, _enclaveSign: bytes, _authorizationSign: bytes) -    reveal(_taskid: bytes32, _resultDigest: bytes32) -    reopen(_taskid: bytes32) <<onlyScheduler>> -    finalize(_taskid: bytes32, _results: bytes, _resultsCallback: bytes) <<onlyScheduler>> -    initializeArray(_dealid: bytes32[], _idx: uint256[]): bool -    claimArray(_taskid: bytes32[]): bool -    initializeAndClaimArray(_dealid: bytes32[], _idx: uint256[]): bool -Public: -    <<modifier>> onlyScheduler(_taskId: bytes32) -    initialize(_dealid: bytes32, idx: uint256): bytes32 -    claim(_taskid: bytes32) - - - -14->1 - - - - - -14->8 - - - - - -14->20 - - - - - -15 - -IexecPocoAccessorsFacet -contracts/facets/IexecPocoAccessorsFacet.sol - -External: -    viewDeal(id: bytes32): (deal: IexecLibCore_v5.Deal) -    viewTask(id: bytes32): IexecLibCore_v5.Task -    computeDealVolume(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): uint256 -    viewConsumed(_id: bytes32): (consumed: uint256) -    viewPresigned(_id: bytes32): (signer: address) -    viewContribution(_taskid: bytes32, _worker: address): IexecLibCore_v5.Contribution -    viewScore(_worker: address): uint256 -    resultFor(id: bytes32): bytes -    name(): string -    symbol(): string -    decimals(): uint8 -    totalSupply(): uint256 -    balanceOf(account: address): uint256 -    frozenOf(account: address): uint256 -    allowance(account: address, spender: address): uint256 -    viewAccount(account: address): IexecLibCore_v5.Account -    token(): address -    viewCategory(_catid: uint256): (category: IexecLibCore_v5.Category) -    countCategory(): (count: uint256) -    appregistry(): IRegistry -    datasetregistry(): IRegistry -    workerpoolregistry(): IRegistry -    teebroker(): address -    callbackgas(): uint256 -    viewDataset(dataset: address): IexecLibCore_v5.DatasetInfo -    viewApp(app: address): IexecLibCore_v5.AppInfo -    viewWorkerpool(workerpool: address): IexecLibCore_v5.WorkerpoolInfo -    contribution_deadline_ratio(): uint256 -    reveal_deadline_ratio(): uint256 -    final_deadline_ratio(): uint256 -    workerpool_stake_ratio(): uint256 -    kitty_ratio(): uint256 -    kitty_min(): uint256 -    kitty_address(): address -    groupmember_purpose(): uint256 -    eip712domain_separator(): bytes32 - - - -15->1 - - - - - -15->18 - - - - - -15->20 - - - - - -16 - -IexecPocoBoostAccessorsFacet -contracts/facets/IexecPocoBoostAccessorsFacet.sol - -External: -    viewDealBoost(id: bytes32): (deal: IexecLibCore_v5.DealBoost) - - - -16->1 - - - - - -17 - -IexecPocoBoostFacet -contracts/facets/IexecPocoBoostFacet.sol - -Private: -    _matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder, sponsor: address): bytes32 -    requireTaskExistsAndUnset(taskStatus: IexecLibCore_v5.TaskStatusEnum, taskIndex: uint256, botSize: uint16) -External: -    matchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 -    sponsorMatchOrdersBoost(appOrder: IexecLibOrders_v5.AppOrder, datasetOrder: IexecLibOrders_v5.DatasetOrder, workerpoolOrder: IexecLibOrders_v5.WorkerpoolOrder, requestOrder: IexecLibOrders_v5.RequestOrder): bytes32 -    pushResultBoost(dealId: bytes32, index: uint256, results: bytes, resultsCallback: bytes, authorizationSign: bytes, enclaveChallenge: address, enclaveSign: bytes) -    claimBoost(dealId: bytes32, index: uint256) - - - -17->1 - - - - - -17->8 - - - - - -17->18 - - - - - -17->20 - - - - - -18->1 - - - - - -19 - -IexecRelayFacet -contracts/facets/IexecRelayFacet.sol - -External: -    broadcastAppOrder(_apporder: IexecLibOrders_v5.AppOrder) -    broadcastDatasetOrder(_datasetorder: IexecLibOrders_v5.DatasetOrder) -    broadcastWorkerpoolOrder(_workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder) -    broadcastRequestOrder(_requestorder: IexecLibOrders_v5.RequestOrder) - - - -19->0 - - - - - -20->1 - - + +IexecRelayFacet +contracts/facets/IexecRelayFacet.sol + +External: +    broadcastAppOrder(_apporder: IexecLibOrders_v5.AppOrder) +    broadcastDatasetOrder(_datasetorder: IexecLibOrders_v5.DatasetOrder) +    broadcastWorkerpoolOrder(_workerpoolorder: IexecLibOrders_v5.WorkerpoolOrder) +    broadcastRequestOrder(_requestorder: IexecLibOrders_v5.RequestOrder) diff --git a/docs/uml/class-uml-dir-libs.svg b/docs/uml/class-uml-dir-libs.svg index bcf61e1e..0875f7d3 100644 --- a/docs/uml/class-uml-dir-libs.svg +++ b/docs/uml/class-uml-dir-libs.svg @@ -4,807 +4,725 @@ - + UmlClassDiagram - + 0 - -<<Library>> -IexecLibCore_v5 -contracts/libs/IexecLibCore_v5.sol + +<<Library>> +IexecLibCore_v5 +contracts/libs/IexecLibCore_v5.sol 1 - -<<Struct>> -Account -contracts/libs/IexecLibCore_v5.sol - -stake: uint256 -locked: uint256 + +<<Struct>> +Account +contracts/libs/IexecLibCore_v5.sol + +stake: uint256 +locked: uint256 1->0 - - + + 2 - -<<Struct>> -Category -contracts/libs/IexecLibCore_v5.sol - -name: string -description: string -workClockTimeRef: uint256 + +<<Struct>> +Category +contracts/libs/IexecLibCore_v5.sol + +name: string +description: string +workClockTimeRef: uint256 2->0 - - + + 3 - -<<Struct>> -DatasetInfo -contracts/libs/IexecLibCore_v5.sol - -owner: address -m_datasetName: string -m_datasetMultiaddr: bytes -m_datasetChecksum: bytes32 + +<<Struct>> +DatasetInfo +contracts/libs/IexecLibCore_v5.sol + +owner: address +m_datasetName: string +m_datasetMultiaddr: bytes +m_datasetChecksum: bytes32 3->0 - - + + 4 - -<<Struct>> -AppInfo -contracts/libs/IexecLibCore_v5.sol - -owner: address -m_appName: string -m_appType: string -m_appMultiaddr: bytes -m_appChecksum: bytes32 -m_appMREnclave: bytes + +<<Struct>> +AppInfo +contracts/libs/IexecLibCore_v5.sol + +owner: address +m_appName: string +m_appType: string +m_appMultiaddr: bytes +m_appChecksum: bytes32 +m_appMREnclave: bytes 4->0 - - + + 5 - -<<Struct>> -WorkerpoolInfo -contracts/libs/IexecLibCore_v5.sol - -owner: address -m_workerpoolDescription: string -m_workerStakeRatioPolicy: uint256 -m_schedulerRewardRatioPolicy: uint256 + +<<Struct>> +WorkerpoolInfo +contracts/libs/IexecLibCore_v5.sol + +owner: address +m_workerpoolDescription: string +m_workerStakeRatioPolicy: uint256 +m_schedulerRewardRatioPolicy: uint256 5->0 - - + + 6 - -<<Struct>> -Resource -contracts/libs/IexecLibCore_v5.sol - -pointer: address -owner: address -price: uint256 + +<<Struct>> +Resource +contracts/libs/IexecLibCore_v5.sol + +pointer: address +owner: address +price: uint256 6->0 - - + + 7 - -<<Struct>> -Deal -contracts/libs/IexecLibCore_v5.sol - -app: Resource -dataset: Resource -workerpool: Resource -trust: uint256 -category: uint256 -tag: bytes32 -requester: address -beneficiary: address -callback: address -params: string -startTime: uint256 -botFirst: uint256 -botSize: uint256 -workerStake: uint256 -schedulerRewardRatio: uint256 -sponsor: address + +<<Struct>> +Deal +contracts/libs/IexecLibCore_v5.sol + +app: Resource +dataset: Resource +workerpool: Resource +trust: uint256 +category: uint256 +tag: bytes32 +requester: address +beneficiary: address +callback: address +params: string +startTime: uint256 +botFirst: uint256 +botSize: uint256 +workerStake: uint256 +schedulerRewardRatio: uint256 +sponsor: address 7->0 - - + + 7->6 - - + + 8 - -<<Struct>> -DealBoost -contracts/libs/IexecLibCore_v5.sol - -appOwner: address -appPrice: uint96 -datasetOwner: address -datasetPrice: uint96 -workerpoolOwner: address -workerpoolPrice: uint96 -requester: address -workerReward: uint96 -callback: address -deadline: uint40 -botFirst: uint16 -botSize: uint16 -shortTag: bytes3 -sponsor: address + +<<Struct>> +DealBoost +contracts/libs/IexecLibCore_v5.sol + +appOwner: address +appPrice: uint96 +datasetOwner: address +datasetPrice: uint96 +workerpoolOwner: address +workerpoolPrice: uint96 +requester: address +workerReward: uint96 +callback: address +deadline: uint40 +botFirst: uint16 +botSize: uint16 +shortTag: bytes3 +sponsor: address 8->0 - - + + 9 - -<<Enum>> -TaskStatusEnum -contracts/libs/IexecLibCore_v5.sol - -UNSET: 0 -ACTIVE: 1 -REVEALING: 2 -COMPLETED: 3 -FAILED: 4 + +<<Enum>> +TaskStatusEnum +contracts/libs/IexecLibCore_v5.sol + +UNSET: 0 +ACTIVE: 1 +REVEALING: 2 +COMPLETED: 3 +FAILED: 4 9->0 - - + + 10 - -<<Struct>> -Task -contracts/libs/IexecLibCore_v5.sol - -status: TaskStatusEnum -dealid: bytes32 -idx: uint256 -timeref: uint256 -contributionDeadline: uint256 -revealDeadline: uint256 -finalDeadline: uint256 -consensusValue: bytes32 -revealCounter: uint256 -winnerCounter: uint256 -contributors: address[] -resultDigest: bytes32 -results: bytes -resultsTimestamp: uint256 -resultsCallback: bytes + +<<Struct>> +Task +contracts/libs/IexecLibCore_v5.sol + +status: TaskStatusEnum +dealid: bytes32 +idx: uint256 +timeref: uint256 +contributionDeadline: uint256 +revealDeadline: uint256 +finalDeadline: uint256 +consensusValue: bytes32 +revealCounter: uint256 +winnerCounter: uint256 +contributors: address[] +resultDigest: bytes32 +results: bytes +resultsTimestamp: uint256 +resultsCallback: bytes 10->0 - - + + 10->9 - - + + 11 - -<<Struct>> -Consensus -contracts/libs/IexecLibCore_v5.sol - -group: mapping(bytes32=>uint256) -total: uint256 + +<<Struct>> +Consensus +contracts/libs/IexecLibCore_v5.sol + +group: mapping(bytes32=>uint256) +total: uint256 11->0 - - + + 12 - -<<Enum>> -ContributionStatusEnum -contracts/libs/IexecLibCore_v5.sol - -UNSET: 0 -CONTRIBUTED: 1 -PROVED: 2 -REJECTED: 3 + +<<Enum>> +ContributionStatusEnum +contracts/libs/IexecLibCore_v5.sol + +UNSET: 0 +CONTRIBUTED: 1 +PROVED: 2 +REJECTED: 3 12->0 - - + + 13 - -<<Struct>> -Contribution -contracts/libs/IexecLibCore_v5.sol - -status: ContributionStatusEnum -resultHash: bytes32 -resultSeal: bytes32 -enclaveChallenge: address -weight: uint256 + +<<Struct>> +Contribution +contracts/libs/IexecLibCore_v5.sol + +status: ContributionStatusEnum +resultHash: bytes32 +resultSeal: bytes32 +enclaveChallenge: address +weight: uint256 13->0 - - + + 13->12 - - + + 14 - -<<Library>> -IexecLibOrders_v5 -contracts/libs/IexecLibOrders_v5.sol - -Public: -   EIP712DOMAIN_TYPEHASH: bytes32 -   APPORDER_TYPEHASH: bytes32 -   DATASETORDER_TYPEHASH: bytes32 -   WORKERPOOLORDER_TYPEHASH: bytes32 -   REQUESTORDER_TYPEHASH: bytes32 -   APPORDEROPERATION_TYPEHASH: bytes32 -   DATASETORDEROPERATION_TYPEHASH: bytes32 -   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 -   REQUESTORDEROPERATION_TYPEHASH: bytes32 - -Public: -    hash(_domain: EIP712Domain): (domainhash: bytes32) -    hash(_apporder: AppOrder): (apphash: bytes32) -    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) -    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) -    hash(_requestorder: RequestOrder): (requesthash: bytes32) -    hash(_apporderoperation: AppOrderOperation): bytes32 -    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 -    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 -    hash(_requestorderoperation: RequestOrderOperation): bytes32 + +<<Library>> +IexecLibOrders_v5 +contracts/libs/IexecLibOrders_v5.sol + +Public: +   EIP712DOMAIN_TYPEHASH: bytes32 +   APPORDER_TYPEHASH: bytes32 +   DATASETORDER_TYPEHASH: bytes32 +   WORKERPOOLORDER_TYPEHASH: bytes32 +   REQUESTORDER_TYPEHASH: bytes32 +   APPORDEROPERATION_TYPEHASH: bytes32 +   DATASETORDEROPERATION_TYPEHASH: bytes32 +   WORKERPOOLORDEROPERATION_TYPEHASH: bytes32 +   REQUESTORDEROPERATION_TYPEHASH: bytes32 + +Public: +    hash(_domain: EIP712Domain): (domainhash: bytes32) +    hash(_apporder: AppOrder): (apphash: bytes32) +    hash(_datasetorder: DatasetOrder): (datasethash: bytes32) +    hash(_workerpoolorder: WorkerpoolOrder): (workerpoolhash: bytes32) +    hash(_requestorder: RequestOrder): (requesthash: bytes32) +    hash(_apporderoperation: AppOrderOperation): bytes32 +    hash(_datasetorderoperation: DatasetOrderOperation): bytes32 +    hash(_workerpoolorderoperation: WorkerpoolOrderOperation): bytes32 +    hash(_requestorderoperation: RequestOrderOperation): bytes32 16 - -<<Struct>> -EIP712Domain -contracts/libs/IexecLibOrders_v5.sol - -name: string -version: string -chainId: uint256 -verifyingContract: address + +<<Struct>> +EIP712Domain +contracts/libs/IexecLibOrders_v5.sol + +name: string +version: string +chainId: uint256 +verifyingContract: address 14->16 - - + + 17 - -<<Struct>> -AppOrder -contracts/libs/IexecLibOrders_v5.sol - -app: address -appprice: uint256 -volume: uint256 -tag: bytes32 -datasetrestrict: address -workerpoolrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +AppOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appprice: uint256 +volume: uint256 +tag: bytes32 +datasetrestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes 14->17 - - + + 18 - -<<Struct>> -DatasetOrder -contracts/libs/IexecLibOrders_v5.sol - -dataset: address -datasetprice: uint256 -volume: uint256 -tag: bytes32 -apprestrict: address -workerpoolrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +DatasetOrder +contracts/libs/IexecLibOrders_v5.sol + +dataset: address +datasetprice: uint256 +volume: uint256 +tag: bytes32 +apprestrict: address +workerpoolrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes 14->18 - - + + 19 - -<<Struct>> -WorkerpoolOrder -contracts/libs/IexecLibOrders_v5.sol - -workerpool: address -workerpoolprice: uint256 -volume: uint256 -tag: bytes32 -category: uint256 -trust: uint256 -apprestrict: address -datasetrestrict: address -requesterrestrict: address -salt: bytes32 -sign: bytes + +<<Struct>> +WorkerpoolOrder +contracts/libs/IexecLibOrders_v5.sol + +workerpool: address +workerpoolprice: uint256 +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +apprestrict: address +datasetrestrict: address +requesterrestrict: address +salt: bytes32 +sign: bytes 14->19 - - + + 20 - -<<Struct>> -RequestOrder -contracts/libs/IexecLibOrders_v5.sol - -app: address -appmaxprice: uint256 -dataset: address -datasetmaxprice: uint256 -workerpool: address -workerpoolmaxprice: uint256 -requester: address -volume: uint256 -tag: bytes32 -category: uint256 -trust: uint256 -beneficiary: address -callback: address -params: string -salt: bytes32 -sign: bytes + +<<Struct>> +RequestOrder +contracts/libs/IexecLibOrders_v5.sol + +app: address +appmaxprice: uint256 +dataset: address +datasetmaxprice: uint256 +workerpool: address +workerpoolmaxprice: uint256 +requester: address +volume: uint256 +tag: bytes32 +category: uint256 +trust: uint256 +beneficiary: address +callback: address +params: string +salt: bytes32 +sign: bytes 14->20 - - + + 21 - -<<Struct>> -AppOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: AppOrder -operation: OrderOperationEnum -sign: bytes + +<<Struct>> +AppOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: AppOrder +operation: OrderOperationEnum +sign: bytes 14->21 - - + + 22 - -<<Struct>> -DatasetOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: DatasetOrder -operation: OrderOperationEnum -sign: bytes + +<<Struct>> +DatasetOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: DatasetOrder +operation: OrderOperationEnum +sign: bytes 14->22 - - + + 23 - -<<Struct>> -WorkerpoolOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: WorkerpoolOrder -operation: OrderOperationEnum -sign: bytes + +<<Struct>> +WorkerpoolOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: WorkerpoolOrder +operation: OrderOperationEnum +sign: bytes 14->23 - - + + 24 - -<<Struct>> -RequestOrderOperation -contracts/libs/IexecLibOrders_v5.sol - -order: RequestOrder -operation: OrderOperationEnum -sign: bytes + +<<Struct>> +RequestOrderOperation +contracts/libs/IexecLibOrders_v5.sol + +order: RequestOrder +operation: OrderOperationEnum +sign: bytes 14->24 - - + + 15 - -<<Enum>> -OrderOperationEnum -contracts/libs/IexecLibOrders_v5.sol - -SIGN: 0 -CLOSE: 1 + +<<Enum>> +OrderOperationEnum +contracts/libs/IexecLibOrders_v5.sol + +SIGN: 0 +CLOSE: 1 15->14 - - + + 16->14 - - + + 17->14 - - + + 18->14 - - + + 19->14 - - + + 20->14 - - + + 21->14 - - + + 21->15 - - + + 21->17 - - + + 22->14 - - + + 22->15 - - + + 22->18 - - + + 23->14 - - + + 23->15 - - + + 23->19 - - + + 24->14 - - + + 24->15 - - + + 24->20 - - + + 25 - -<<Library>> -PocoStorageLib -contracts/libs/PocoStorageLib.sol - -Private: -   POCO_STORAGE_LOCATION: bytes32 - -Internal: -    getPocoStorage(): ($: PocoStorage) + +<<Library>> +PocoStorageLib +contracts/libs/PocoStorageLib.sol + +Private: +   POCO_STORAGE_LOCATION: bytes32 + +Internal: +    getPocoStorage(): ($: PocoStorage) 26 - -<<Struct>> -PocoStorage -contracts/libs/PocoStorageLib.sol - -m_appregistry: IRegistry -m_datasetregistry: IRegistry -m_workerpoolregistry: IRegistry -m_baseToken: IERC20 -m_name: string -m_symbol: string -m_decimals: uint8 -m_totalSupply: uint256 -m_balances: mapping(address=>uint256) -m_frozens: mapping(address=>uint256) -m_allowances: mapping(address=>mapping(address=>uint256)) -m_eip712DomainSeparator: bytes32 -m_presigned: mapping(bytes32=>address) -m_consumed: mapping(bytes32=>uint256) -m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) -m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) -m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) -m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) -m_workerScores: mapping(address=>uint256) -m_teebroker: address -m_callbackgas: uint256 -m_categories: IexecLibCore_v5.Category[] -m_v3_iexecHub: IexecHubInterface -m_v3_scoreImported: mapping(address=>bool) + +<<Struct>> +PocoStorage +contracts/libs/PocoStorageLib.sol + +m_appregistry: IRegistry +m_datasetregistry: IRegistry +m_workerpoolregistry: IRegistry +m_baseToken: IERC20 +m_name: string +m_symbol: string +m_decimals: uint8 +m_totalSupply: uint256 +m_balances: mapping(address=>uint256) +m_frozens: mapping(address=>uint256) +m_allowances: mapping(address=>mapping(address=>uint256)) +m_eip712DomainSeparator: bytes32 +m_presigned: mapping(bytes32=>address) +m_consumed: mapping(bytes32=>uint256) +m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) +m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) +m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) +m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) +m_workerScores: mapping(address=>uint256) +m_teebroker: address +m_callbackgas: uint256 +m_categories: IexecLibCore_v5.Category[] +m_v3_iexecHub: IexecHubV3Interface +m_v3_scoreImported: mapping(address=>bool) +m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) 25->26 - - + + 26->0 - - + + 26->25 - - - - - -27 - -<<Library>> -PocoStorageLib -contracts/libs/PocoStorageLib.v8.sol - -Private: -   POCO_STORAGE_LOCATION: bytes32 - -Internal: -    getPocoStorage(): ($: PocoStorage) - - - -28 - -<<Struct>> -PocoStorage -contracts/libs/PocoStorageLib.v8.sol - -m_appregistry: IRegistry -m_datasetregistry: IRegistry -m_workerpoolregistry: IRegistry -m_baseToken: IERC20 -m_name: string -m_symbol: string -m_decimals: uint8 -m_totalSupply: uint256 -m_balances: mapping(address=>uint256) -m_frozens: mapping(address=>uint256) -m_allowances: mapping(address=>mapping(address=>uint256)) -m_eip712DomainSeparator: bytes32 -m_presigned: mapping(bytes32=>address) -m_consumed: mapping(bytes32=>uint256) -m_deals: mapping(bytes32=>IexecLibCore_v5.Deal) -m_tasks: mapping(bytes32=>IexecLibCore_v5.Task) -m_consensus: mapping(bytes32=>IexecLibCore_v5.Consensus) -m_contributions: mapping(bytes32=>mapping(address=>IexecLibCore_v5.Contribution)) -m_workerScores: mapping(address=>uint256) -m_teebroker: address -m_callbackgas: uint256 -m_categories: IexecLibCore_v5.Category[] -m_v3_iexecHub: address -m_v3_scoreImported: mapping(address=>bool) -m_dealsBoost: mapping(bytes32=>IexecLibCore_v5.DealBoost) - - - -27->28 - - - - - -28->0 - - - - - -28->27 - - - - - -29 - -<<Interface>> -IRegistry -contracts/libs/PocoStorageLib.v8.sol - -External: -     isRegistered(_entry: address): bool - - - -28->29 - - + + diff --git a/docs/uml/class-uml-dir-registries.svg b/docs/uml/class-uml-dir-registries.svg index 88836674..cb182f54 100644 --- a/docs/uml/class-uml-dir-registries.svg +++ b/docs/uml/class-uml-dir-registries.svg @@ -4,95 +4,122 @@ - - + + UmlClassDiagram - + 0 - -<<Interface>> -IRegistry -contracts/registries/IRegistry.sol - -External: -     isRegistered(_entry: address): bool + +<<Interface>> +IRegistry +contracts/registries/IRegistry.sol + +External: +     isRegistered(_entry: address): bool 1 - -<<Abstract>> -Registry -contracts/registries/Registry.sol - -Public: -   master: address -   proxyCode: bytes -   proxyCodeHash: bytes32 -   previous: IRegistry -   initialized: bool - -Internal: -    _mintCreate(_owner: address, _args: bytes): uint256 -    _mintPredict(_owner: address, _args: bytes): uint256 -External: -    initialize(_previous: address) <<onlyOwner>> -    setBaseURI(_baseURI: string) <<onlyOwner>> -    isRegistered(_entry: address): bool -    setName(address, string) <<onlyOwner>> -Public: -    constructor(_master: address, _name: string, _symbol: string) + +<<Abstract>> +Registry +contracts/registries/Registry.sol + +Private: +   _baseUri: string +Public: +   master: address +   proxyCode: bytes +   proxyCodeHash: bytes32 +   previous: IRegistry +   initialized: bool + +Internal: +    _checkOwner() +    _mintCreate(_owner: address, _args: bytes): address +    _mintPredict(_owner: address, _args: bytes): address +    _baseURI(): string +External: +    initialize(_previous: address) <<onlyOwner>> +    setBaseURI(baseUri: string) <<onlyOwner>> +    isRegistered(_entry: address): bool +    setName(address, string) <<onlyOwner>> +Public: +    constructor(_master: address, _name: string, _symbol: string) +    baseURI(): string 1->0 - - + + + + + +11 + +InitializableUpgradeabilityProxy +contracts/registries/proxy/InitializableUpgradeabilityProxy.sol + +Public: +    <<payable>> initialize(_logic: address, _data: bytes) + + + +1->11 + + 2 - -<<Abstract>> -RegistryEntry -contracts/registries/RegistryEntry.sol - -Public: -   registry: IRegistry - -Internal: -    _initialize(_registry: address) -External: -    setName(address, string) <<onlyOwner>> -Public: -    <<modifier>> onlyOwner() -    owner(): address + +<<Abstract>> +RegistryEntry +contracts/registries/RegistryEntry.sol + +Public: +   registry: IRegistry + +Internal: +    _initialize(_registry: address) +External: +    setName(address, string) <<onlyOwner>> +Public: +    <<modifier>> onlyOwner() +    owner(): address + + + +2->0 + + 3 - -App -contracts/registries/apps/App.sol - -Public: -   m_appName: string -   m_appType: string -   m_appMultiaddr: bytes -   m_appChecksum: bytes32 -   m_appMREnclave: bytes - -Public: -    initialize(_appName: string, _appType: string, _appMultiaddr: bytes, _appChecksum: bytes32, _appMREnclave: bytes) + +App +contracts/registries/apps/App.sol + +Public: +   m_appName: string +   m_appType: string +   m_appMultiaddr: bytes +   m_appChecksum: bytes32 +   m_appMREnclave: bytes + +Public: +    initialize(_appName: string, _appType: string, _appMultiaddr: bytes, _appChecksum: bytes32, _appMREnclave: bytes) - + 3->2 - - + + @@ -110,16 +137,16 @@    constructor() - + 4->1 - - + + - + 4->3 - - + + @@ -140,23 +167,23 @@ 6 - -Dataset -contracts/registries/datasets/Dataset.sol - -Public: -   m_datasetName: string -   m_datasetMultiaddr: bytes -   m_datasetChecksum: bytes32 - -Public: -    initialize(_datasetName: string, _datasetMultiaddr: bytes, _datasetChecksum: bytes32) + +Dataset +contracts/registries/datasets/Dataset.sol + +Public: +   m_datasetName: string +   m_datasetMultiaddr: bytes +   m_datasetChecksum: bytes32 + +Public: +    initialize(_datasetName: string, _datasetMultiaddr: bytes, _datasetChecksum: bytes32) - + 6->2 - - + + @@ -174,16 +201,16 @@    constructor() - + 7->1 - - + + - + 7->6 - - + + @@ -202,6 +229,69 @@ 9 + +<<Library>> +Address +contracts/registries/proxy/Address.sol + +Internal: +    isContract(account: address): bool + + + +10 + +BaseUpgradeabilityProxy +contracts/registries/proxy/BaseUpgradeabilityProxy.sol + +Internal: +   IMPLEMENTATION_SLOT: bytes32 + +Internal: +    _implementation(): (impl: address) +    _upgradeTo(newImplementation: address) +    _setImplementation(newImplementation: address) +Public: +    <<event>> Upgraded(implementation: address) + + + +10->9 + + + + + +12 + +<<Abstract>> +Proxy +contracts/registries/proxy/Proxy.sol + +Internal: +    <<abstract>> _implementation(): (impl: address) +    _delegate(implementation: address) +    _willFallback() +    _fallback() +External: +    <<payable>> null() +    <<payable>> null() + + + +10->12 + + + + + +11->10 + + + + + +13 <<Interface>> IWorkerpool @@ -213,33 +303,33 @@     m_schedulerRewardRatioPolicy(): uint256     m_workerStakeRatioPolicy(): uint256 - - -10 - -Workerpool -contracts/registries/workerpools/Workerpool.sol - -Public: -   m_workerpoolDescription: string -   m_workerStakeRatioPolicy: uint256 -   m_schedulerRewardRatioPolicy: uint256 - -External: -    changePolicy(_newWorkerStakeRatioPolicy: uint256, _newSchedulerRewardRatioPolicy: uint256) <<onlyOwner>> -Public: -    <<event>> PolicyUpdate(oldWorkerStakeRatioPolicy: uint256, newWorkerStakeRatioPolicy: uint256, oldSchedulerRewardRatioPolicy: uint256, newSchedulerRewardRatioPolicy: uint256) -    initialize(_workerpoolDescription: string) - - - -10->2 - - + + +14 + +Workerpool +contracts/registries/workerpools/Workerpool.sol + +Public: +   m_workerpoolDescription: string +   m_workerStakeRatioPolicy: uint256 +   m_schedulerRewardRatioPolicy: uint256 + +External: +    changePolicy(_newWorkerStakeRatioPolicy: uint256, _newSchedulerRewardRatioPolicy: uint256) <<onlyOwner>> +Public: +    <<event>> PolicyUpdate(oldWorkerStakeRatioPolicy: uint256, newWorkerStakeRatioPolicy: uint256, oldSchedulerRewardRatioPolicy: uint256, newSchedulerRewardRatioPolicy: uint256) +    initialize(_workerpoolDescription: string) - - -11 + + +14->2 + + + + + +15 WorkerpoolRegistry contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -252,17 +342,17 @@ Public:    constructor() - - -11->1 - - + + +15->1 + + - - -11->10 - - + + +15->14 + + diff --git a/docs/uml/storage-diagram-poco.svg b/docs/uml/storage-diagram-poco.svg index 1fef3654..8c2605ba 100644 --- a/docs/uml/storage-diagram-poco.svg +++ b/docs/uml/storage-diagram-poco.svg @@ -139,9 +139,9 @@ IexecLibCore_v5.Category[]: PocoStorage.m_categories (32) -unallocated (12) - -address: PocoStorage.m_v3_iexecHub (20) +unallocated (12) + +IexecHubV3Interface: PocoStorage.m_v3_iexecHub (20) mapping(address=>bool): PocoStorage.m_v3_scoreImported (32) From 68a87435ba6822807191f68095ae8acefbfe6f7b Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 27 Nov 2025 15:48:53 +0100 Subject: [PATCH 14/14] refactor: Make contrat abstract --- contracts/abstract/IexecEscrow.sol | 2 +- contracts/abstract/IexecPocoCommon.sol | 2 +- contracts/abstract/SignatureVerifier.sol | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/abstract/IexecEscrow.sol b/contracts/abstract/IexecEscrow.sol index e0efc2b1..1654f0d9 100644 --- a/contracts/abstract/IexecEscrow.sol +++ b/contracts/abstract/IexecEscrow.sol @@ -8,7 +8,7 @@ import {FacetBase} from "./FacetBase.sol"; /** * @title Manage (lock/unlock/reward/seize) user funds. */ -contract IexecEscrow is FacetBase { +abstract contract IexecEscrow is FacetBase { event Transfer(address indexed from, address indexed to, uint256 value); event Lock(address owner, uint256 amount); event Unlock(address owner, uint256 amount); diff --git a/contracts/abstract/IexecPocoCommon.sol b/contracts/abstract/IexecPocoCommon.sol index f4591e50..5206bc13 100644 --- a/contracts/abstract/IexecPocoCommon.sol +++ b/contracts/abstract/IexecPocoCommon.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.0; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; -import {FacetBase} from "../abstract/FacetBase.sol"; +import {FacetBase} from "./FacetBase.sol"; abstract contract IexecPocoCommon is FacetBase { using Math for uint256; diff --git a/contracts/abstract/SignatureVerifier.sol b/contracts/abstract/SignatureVerifier.sol index 7046ffbd..e42724b6 100644 --- a/contracts/abstract/SignatureVerifier.sol +++ b/contracts/abstract/SignatureVerifier.sol @@ -6,7 +6,7 @@ pragma solidity ^0.8.0; import {IERC1271} from "@openzeppelin/contracts/interfaces/IERC1271.sol"; import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; -import {FacetBase} from "../abstract/FacetBase.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IERC734} from "../external/interfaces/IERC734.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol";