From 5d5fd14fbb610c988e00b22a7a4585c75b04309d Mon Sep 17 00:00:00 2001 From: drgorillamd <83670532+drgorillamd@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:18:30 +0100 Subject: [PATCH 01/28] chore: properties md update --- test/invariants/PROPERTIES.md | 66 ++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 4 deletions(-) diff --git a/test/invariants/PROPERTIES.md b/test/invariants/PROPERTIES.md index e48439c..2bd0601 100644 --- a/test/invariants/PROPERTIES.md +++ b/test/invariants/PROPERTIES.md @@ -1,4 +1,62 @@ -| Properties | Type | -|---------------------------------------------------|------------| -| Greeting should never be empty | Valid state | -| Only the owner can set the greeting | State transition | \ No newline at end of file +# Properties + +## Principles +Precondition for proposing/disputing: stake(token) and provision on Horizon staking contract + +Prophet modules in use (some modified from the example repo): +- request: eboRequestCreator -> eboRequestModule +- response: bondedResponseModule +- dispute: bondedDisputeEscalationModule (claimEscalationReward tries to slash, if revert oog (too many users), then has new fn `slash()` is called) +- resolution: arbitratorModule + ArbitratorContract (receive resolution, then calls resolveDispute and tries to finalize) +- finality: eboFinalityModule (emit event and check if request created via eboRequestCreator) +- AccessControl: every external function is gated, for Horizon operators (ie `caller` is either msg.sender or msg.sender is authorized as +operator for `caller`) + + +- Requester + - Can always create a request + - only one chainId/epoch can be requested at a time (a tuple can have second request if finalized without answer) + +- Proposer + - Can always send answer before the deadline if enough token to bound in Horizon staking contract AND if any previous response is disputed OR no response at all + - Can escalate MAX ESCALATION times + - Every escalation creates a new tying buffer for further escalation (even if past deadline) + +- Disputer + - Can always dispute if before finalisation/during dispute window, if enough token to bound in Horizon staking and not previously disputed + - only first disputed response is escalated (others go to resolution) + - Can escalate MAX ESCALATION times + - every escalation creates a new tying buffer for further escalation (even if past deadline) + +- Pledgers: + - can pledge on any active dispute or resolution, during tying buffer/before deadline, if it’s that side’s turn + - Can only pledge one pledge at a time (you can only surpass other team by one pledge at a time), first to tie then to out-pledge (always 2 ties by side) + +- Protocol + - finalise only after deadline + - no possible way for a given actor to use another one’s bonded token (no bonding or pledging/claiming on behalf of someone else if not allowed in the Horison staking contract) + - bonded amount only accessible by one requestId + - disputeId and responseId can only be tied to a given requestId + - arbitrator: can always settled a dispute if not finalised (can be a no resolution) + + +- disputer + +wins → his money + proposer bonded amt +loose loose all +no resolution his money (when no pledging or max escalation on both side or other resolution module logic if only dispute module) + +- pledger +wins → their money + enemy +no resolution -> their money + +**winning determined by *pledger*s (b, c)** + +bonded dispute goes to resolution if: escalateDispute or tie + +## Properties & Invariants + +| Id | Properties | Type | +|----|---------------------------------------------------|------------| + +## Handler coverage From 3b777150842063c9afe621174f408a92a3abf3c4 Mon Sep 17 00:00:00 2001 From: drgorillamd <83670532+drgorillamd@users.noreply.github.com> Date: Sun, 10 Nov 2024 23:03:23 +0100 Subject: [PATCH 02/28] test(medusa): handlers and working setup --- test/invariants/FuzzTest.t.sol | 10 + test/invariants/PROPERTIES.md | 95 +++++++- test/invariants/Setup.t.sol | 208 ++++++++++++++++++ test/invariants/handlers/BaseHandler.t.sol | 79 +++++++ .../handlers/HandlerArbitrable.t.sol | 25 +++ .../HandlerBondEscalationModule.t.sol | 92 ++++++++ .../HandlerBondedResponseModule.t.sol | 56 +++++ .../handlers/HandlerCouncilArbitrator.t.sol | 37 ++++ .../handlers/HandlerEBOFinalityModule.t.sol | 46 ++++ .../handlers/HandlerEBORequestCreator.t.sol | 91 ++++++++ .../handlers/HandlerEBORequestModule.t.sol | 16 ++ .../HandlerHorizonAccountingExtension.t.sol | 128 +++++++++++ test/invariants/handlers/HandlerOracle.t.sol | 150 +++++++++++++ test/invariants/handlers/HandlerParent.t.sol | 28 +++ test/invariants/helpers/Actors.t.sol | 25 +++ test/invariants/helpers/FuzzERC20.sol | 32 +++ test/invariants/helpers/IStdCheats.sol | 88 ++++++++ .../invariants/helpers/MockEpochManager.t.sol | 14 ++ .../helpers/MockHorizonStaking.t.sol | 44 ++++ test/invariants/helpers/Utils.t.sol | 90 ++++++++ test/invariants/properties/PropertyA.t.sol | 9 + .../properties/PropertyParent.t.sol | 9 + yarn.lock | 4 +- 23 files changed, 1371 insertions(+), 5 deletions(-) create mode 100644 test/invariants/FuzzTest.t.sol create mode 100644 test/invariants/Setup.t.sol create mode 100644 test/invariants/handlers/BaseHandler.t.sol create mode 100644 test/invariants/handlers/HandlerArbitrable.t.sol create mode 100644 test/invariants/handlers/HandlerBondEscalationModule.t.sol create mode 100644 test/invariants/handlers/HandlerBondedResponseModule.t.sol create mode 100644 test/invariants/handlers/HandlerCouncilArbitrator.t.sol create mode 100644 test/invariants/handlers/HandlerEBOFinalityModule.t.sol create mode 100644 test/invariants/handlers/HandlerEBORequestCreator.t.sol create mode 100644 test/invariants/handlers/HandlerEBORequestModule.t.sol create mode 100644 test/invariants/handlers/HandlerHorizonAccountingExtension.t.sol create mode 100644 test/invariants/handlers/HandlerOracle.t.sol create mode 100644 test/invariants/handlers/HandlerParent.t.sol create mode 100644 test/invariants/helpers/Actors.t.sol create mode 100644 test/invariants/helpers/FuzzERC20.sol create mode 100644 test/invariants/helpers/IStdCheats.sol create mode 100644 test/invariants/helpers/MockEpochManager.t.sol create mode 100644 test/invariants/helpers/MockHorizonStaking.t.sol create mode 100644 test/invariants/helpers/Utils.t.sol create mode 100644 test/invariants/properties/PropertyA.t.sol create mode 100644 test/invariants/properties/PropertyParent.t.sol diff --git a/test/invariants/FuzzTest.t.sol b/test/invariants/FuzzTest.t.sol new file mode 100644 index 0000000..c1fe413 --- /dev/null +++ b/test/invariants/FuzzTest.t.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {PropertyParent} from './properties/PropertyParent.t.sol'; + +contract FuzzTest is PropertyParent { + function test_debug() public { + assert(true); + } +} diff --git a/test/invariants/PROPERTIES.md b/test/invariants/PROPERTIES.md index 2bd0601..b643240 100644 --- a/test/invariants/PROPERTIES.md +++ b/test/invariants/PROPERTIES.md @@ -50,13 +50,102 @@ no resolution his money (when no pledging or max escalation on both side or othe wins → their money + enemy no resolution -> their money -**winning determined by *pledger*s (b, c)** +**winning determined by *pledgers* (b, c)** bonded dispute goes to resolution if: escalateDispute or tie ## Properties & Invariants -| Id | Properties | Type | -|----|---------------------------------------------------|------------| +| Id | Properties | Type | +| --- | ---------- | ---- | ## Handler coverage + +EBORequestCreator +| Function | Handler | +| ---------------------------------------------------------------------- | ------- | +| createRequest(uint256,string) | [] | +| addChain(string) | [] | +| removeChain(string) | [] | +| setRequestModuleData(address,IEBORequestModule.RequestParameters) | [] | +| setResponseModuleData(address,IBondedResponseModule.RequestParameters) | [] | +| setDisputeModuleData(address,IBondEscalationModule.RequestParameters) | [] | +| setResolutionModuleData(address,IArbitratorModule.RequestParameters) | [] | +| setFinalityModuleData(address) | [] | +| setEpochManager(IEpochManager) | [] | + +EBORequestModule +| Function | Handler | +| ------------------------------------------- | ------- | +| createRequest(bytes32,bytes,address) | [] | +| addEBORequestCreator(IEBORequestCreator) | [] | +| removeEBORequestCreator(IEBORequestCreator) | [] | + +BondedResponseModule +| Function | Handler | +| ----------------------------------------------------------- | ------- | +| propose(IOracle.Request,IOracle.Response,address) | [] | +| finalizeRequest(IOracle.Request,IOracle.Response,address) | [] | +| releaseUnutilizedResponse(IOracle.Request,IOracle.Response) | [] | + +BondEscalationModule +| Function | Handler | +| ------------------------------------------------------------------------------- | ------- | +| disputeResponse(IOracle.Request,IOracle.Response,IOracle.Dispute) | [] | +| onDisputeStatusChange(bytes32,IOracle.Request,IOracle.Response,IOracle.Dispute) | [] | +| pledgeForDispute(IOracle.Request, IOracle.Dispute) | [] | +| pledgeAgainstDispute(IOracle.Request, IOracle.Dispute) | [] | +| settleBondEscalation(IOracle.Request,IOracle.Response,IOracle.Dispute) | [] | + +CouncilArbitrator +| Function | Handler | +| --------------------------------------------------------- | ------- | +| resolve(IOracle.Request,IOracle.Response,IOracle.Dispute) | [] | +| arbitrateDispute(bytes32,IOracle.DisputeStatus) | [] | + +EBOFinalityModule +| Function | Handler | +| --------------------------------------------------------- | ------- | +| finalizeRequest(IOracle.Request,IOracle.Response,address) | [] | +| amendEpoch(uint256,string[],uint256[]) | [] | +| addEBORequestCreator(IEBORequestCreator) | [] | +| removeEBORequestCreator(IEBORequestCreator) | [] | + +HorizonAccountingExtension +| Function | Handler | +| ------------------------------------------------------------------------------ | ------- | +| approveModule(address) | [] | +| revokeModule(address) | [] | +| pledge(address,IOracle.Request,IOracle.Dispute,IERC20,uint256) | [] | +| onSettleBondEscalation(IOracle.Request,IOracle.Dispute,IERC20,uint256,uint256) | [] | +| claimEscalationReward(bytes32,address) | [] | +| pay(bytes32,address,address,IERC20,uint256) | [] | +| bond(address,bytes32,IERC20,uint256) | [] | +| bond(address,bytes32,IERC20,uint256,address) | [] | +| release(address,bytes32,IERC20,uint256) | [] | +| slash(bytes32,uint256,uint256) | [] | +| setMaxUsersToCheck(uint128) | [] | + +Arbitrable +| Function | Handler | +| --------------------------- | ------- | +| arbitrator() | [] | +| council() | [] | +| pendingCouncil() | [] | +| validateArbitrator(address) | [] | +| setArbitrator(address) | [] | +| setPendingCouncil(address) | [] | +| confirmCouncil() | [] | + +Oracle +| Function | Handler | +| -------------------------------------------------------------------- | ------- | +| createRequest(Request,bytes32) external returns (bytes32) | [] | +| createRequests(Request[],bytes32[]) external returns (bytes32[]) | [] | +| listRequestIds(uint256,uint256) external view returns (bytes32[]) | [] | +| proposeResponse(Request,Response) external returns (bytes32) | [] | +| disputeResponse(Request,Response,Dispute) external returns (bytes32) | [] | +| escalateDispute(Request,Response,Dispute) external | [] | +| resolveDispute(Request,Response,Dispute) external | [] | +| updateDisputeStatus(Request,Response,Dispute,DisputeStatus) external | [] | +| finalize(Request,Response) external | [] | diff --git a/test/invariants/Setup.t.sol b/test/invariants/Setup.t.sol new file mode 100644 index 0000000..5d8a97d --- /dev/null +++ b/test/invariants/Setup.t.sol @@ -0,0 +1,208 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {ValidatorLib} from '@defi-wonderland/prophet-core/solidity/libraries/ValidatorLib.sol'; + +import { + BondEscalationModule, + IBondEscalationModule +} from '@defi-wonderland/prophet-modules/solidity/contracts/modules/dispute/BondEscalationModule.sol'; + +import { + ArbitratorModule, + IArbitratorModule +} from '@defi-wonderland/prophet-modules/solidity/contracts/modules/resolution/ArbitratorModule.sol'; +import { + BondedResponseModule, + IBondedResponseModule +} from '@defi-wonderland/prophet-modules/solidity/contracts/modules/response/BondedResponseModule.sol'; +import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol'; +import {IAccountingExtension} from + '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IAccountingExtension.sol'; +import {IBondEscalationAccounting} from + '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IBondEscalationAccounting.sol'; + +import {IArbitrable, IArbitratorModule, ICouncilArbitrator, IOracle} from 'interfaces/ICouncilArbitrator.sol'; + +import {Utils} from './helpers/Utils.t.sol'; + +import {IEBOFinalityModule} from 'interfaces/IEBOFinalityModule.sol'; +import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol'; + +import {IEpochManager} from 'interfaces/external/IEpochManager.sol'; +import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol'; + +import {FuzzERC20, IERC20} from './helpers/FuzzERC20.sol'; + +import {IOracle, Oracle} from '@defi-wonderland/prophet-core/solidity/contracts/Oracle.sol'; + +import {BondEscalationModule} from + '@defi-wonderland/prophet-modules/solidity/contracts/modules/dispute/BondEscalationModule.sol'; +import {BondedResponseModule} from + '@defi-wonderland/prophet-modules/solidity/contracts/modules/response/BondedResponseModule.sol'; + +import {Arbitrable} from 'contracts/Arbitrable.sol'; +import {CouncilArbitrator} from 'contracts/CouncilArbitrator.sol'; +import {EBOFinalityModule} from 'contracts/EBOFinalityModule.sol'; +import {EBORequestCreator, IEBORequestCreator} from 'contracts/EBORequestCreator.sol'; +import {EBORequestModule} from 'contracts/EBORequestModule.sol'; + +import {HorizonAccountingExtension} from 'contracts/HorizonAccountingExtension.sol'; + +import {MockEpochManager} from './helpers/MockEpochManager.t.sol'; +import {MockHorizonStaking} from './helpers/MockHorizonStaking.t.sol'; + +contract Setup is Utils { + // Core contracts + Oracle internal oracle; + EBORequestCreator internal eboRequestCreator; + EBORequestModule internal eboRequestModule; + BondedResponseModule internal bondedResponseModule; + BondEscalationModule internal bondEscalationModule; + CouncilArbitrator internal councilArbitrator; + EBOFinalityModule internal eboFinalityModule; + Arbitrable internal arbitrable; + HorizonAccountingExtension internal horizonAccountingExtension; + ArbitratorModule internal arbitratorModule; + + // External contracts (mocked) + IHorizonStaking internal horizonStaking; + IERC20 internal GRT; + IEpochManager internal epochManager; + + // Constants + uint256 internal constant START_EPOCH = 1000; + uint64 internal constant MIN_THAWING_PERIOD = 1 days; + uint128 internal constant INITIAL_MAX_USERS_TO_CHECK = 10; + uint32 internal constant MAX_VERIFIER_CUT = 1_000_000; + + uint256 internal constant PAYMENT_AMOUNT = 0 ether; + + uint256 internal constant RESPONSE_BOND_SIZE = 0.5 ether; + uint256 internal constant RESPONSE_DEADLINE = 5 days; + uint256 internal constant RESPONSE_DISPUTE_WINDOW = 1 weeks; + + uint256 internal constant DISPUTE_BOND_SIZE = 0.3 ether; + uint256 internal constant MAX_NB_ESCALATION = 2; + uint256 internal constant DISPUTE_DEADLINE = 10 days; + uint256 internal constant TYING_BUFFER = 3 days; + uint256 internal constant DISPUTE_DISPUTE_WINDOW = 2 weeks; + + constructor() { + // Deploy mock contracts + GRT = IERC20(address(new FuzzERC20())); + epochManager = IEpochManager(address(new MockEpochManager(START_EPOCH))); + horizonStaking = IHorizonStaking(address(new MockHorizonStaking(GRT))); + + // Deploy core contracts + arbitrable = new Arbitrable( + address(this), // Initial arbitrator + address(this) // Initial council + ); + + oracle = new Oracle(); + + eboRequestModule = new EBORequestModule( + oracle, + EBORequestCreator(address(0)), //eboRequestCreator will be set after creation + arbitrable + ); + + bondedResponseModule = new BondedResponseModule(oracle); + + bondEscalationModule = new BondEscalationModule(oracle); + + arbitratorModule = new ArbitratorModule(oracle); + + councilArbitrator = new CouncilArbitrator(arbitratorModule, arbitrable); + + eboFinalityModule = new EBOFinalityModule( + oracle, + EBORequestCreator(address(0)), // Will be set after creation + arbitrable + ); + + // Set up accounting extension + address[] memory authorizedCallers = new address[](1); + authorizedCallers[0] = address(bondEscalationModule); + + horizonAccountingExtension = new HorizonAccountingExtension( + horizonStaking, oracle, GRT, arbitrable, MIN_THAWING_PERIOD, INITIAL_MAX_USERS_TO_CHECK, authorizedCallers + ); + + // Create EBO request creator with initial parameters + IOracle.Request memory initialRequest = IOracle.Request({ + requestModule: address(eboRequestModule), + responseModule: address(bondedResponseModule), + disputeModule: address(bondEscalationModule), + resolutionModule: address(arbitratorModule), + finalityModule: address(eboFinalityModule), + requester: address(0), // Will be set to eboRequestCreator's address + requestModuleData: '', + responseModuleData: '', + disputeModuleData: '', + resolutionModuleData: '', + finalityModuleData: '', + nonce: 0 + }); + + eboRequestCreator = new EBORequestCreator(oracle, epochManager, arbitrable, initialRequest); + + // Initialize modules with eboRequestCreator + eboRequestModule.addEBORequestCreator(eboRequestCreator); + eboFinalityModule.addEBORequestCreator(eboRequestCreator); + + // Set up module permissions + horizonAccountingExtension.approveModule(address(bondedResponseModule)); + horizonAccountingExtension.approveModule(address(bondEscalationModule)); + + // Set up initial chain IDs + eboRequestCreator.addChain('mainnet'); + eboRequestCreator.addChain('optimism'); + eboRequestCreator.addChain('arbitrum'); + + // Set up initial module parameters + _setupModuleParameters(); + } + + function _setupModuleParameters() internal { + // Set up request module parameters + IEBORequestModule.RequestParameters memory requestParams = IEBORequestModule.RequestParameters({ + epoch: START_EPOCH, + chainId: 'mainnet', + accountingExtension: IAccountingExtension(address(horizonAccountingExtension)), + paymentAmount: PAYMENT_AMOUNT + }); + eboRequestCreator.setRequestModuleData(address(eboRequestModule), requestParams); + + // Set up response module parameters + IBondedResponseModule.RequestParameters memory responseParams = IBondedResponseModule.RequestParameters({ + accountingExtension: IAccountingExtension(address(horizonAccountingExtension)), + bondToken: GRT, + bondSize: RESPONSE_BOND_SIZE, + deadline: RESPONSE_DEADLINE, + disputeWindow: RESPONSE_DISPUTE_WINDOW + }); + eboRequestCreator.setResponseModuleData(address(bondedResponseModule), responseParams); + + // Set up dispute module parameters + IBondEscalationModule.RequestParameters memory disputeParams = IBondEscalationModule.RequestParameters({ + accountingExtension: IBondEscalationAccounting(address(horizonAccountingExtension)), + bondToken: GRT, + bondSize: DISPUTE_BOND_SIZE, + maxNumberOfEscalations: MAX_NB_ESCALATION, + bondEscalationDeadline: DISPUTE_DEADLINE, + tyingBuffer: TYING_BUFFER, + disputeWindow: DISPUTE_DISPUTE_WINDOW + }); + eboRequestCreator.setDisputeModuleData(address(bondEscalationModule), disputeParams); + + // Set up resolution module parameters + IArbitratorModule.RequestParameters memory resolutionParams = + IArbitratorModule.RequestParameters({arbitrator: address(councilArbitrator)}); + eboRequestCreator.setResolutionModuleData(address(arbitratorModule), resolutionParams); + + // Set finality module + eboRequestCreator.setFinalityModuleData(address(eboFinalityModule)); + } +} diff --git a/test/invariants/handlers/BaseHandler.t.sol b/test/invariants/handlers/BaseHandler.t.sol new file mode 100644 index 0000000..51301fd --- /dev/null +++ b/test/invariants/handlers/BaseHandler.t.sol @@ -0,0 +1,79 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import /*{} from*/ '../Setup.t.sol'; +import {Actors} from '../helpers/Actors.t.sol'; + +// Base handler with tracking logic +contract BaseHandler is Setup, Actors { + // Track all created request IDs + bytes32[] internal _ghost_requests; + + // Track request details + mapping(bytes32 => IOracle.Request) internal _ghost_requestData; + + // Track responses for requests + mapping(bytes32 => bytes32) internal _ghost_activeResponses; // requestId => responseId + mapping(bytes32 => IOracle.Response) internal _ghost_responseData; + mapping(bytes32 => bool) internal _ghost_finalizedResponses; + + // Track disputes + mapping(bytes32 => bytes32[]) internal _ghost_disputes; // requestId => disputeIds + mapping(bytes32 => IOracle.Dispute) internal _ghost_disputeData; + mapping(bytes32 => IOracle.DisputeStatus) internal _ghost_disputeStatuses; + + // Track which requests came from EBORequestCreator + mapping(bytes32 => bool) internal _ghost_validRequests; + + // Track chain IDs used per epoch to prevent duplicates + mapping(uint256 => mapping(string => bool)) internal _ghost_epochChainIds; + + // Track bonds and pledges + mapping(address => mapping(bytes32 => uint256)) internal _ghost_bonds; + mapping(address => mapping(bytes32 => uint256)) internal _ghost_pledgesFor; + mapping(address => mapping(bytes32 => uint256)) internal _ghost_pledgesAgainst; + + // Helper functions + function _boundEpoch(uint256 _epoch) internal view returns (uint256) { + return bound(_epoch, START_EPOCH, START_EPOCH + 1000); + } + + function _boundAmount(uint256 _amount) internal pure returns (uint256) { + return bound(_amount, 1, 1_000_000e18); + } + + function _boundBlockNumber(uint256 _blockNumber) internal view returns (uint256) { + return bound(_blockNumber, block.number - 1000, block.number); + } + + function _generateChainId(uint256 _seed) internal pure returns (string memory) { + string[3] memory chains = ['mainnet', 'optimism', 'arbitrum']; + return chains[_seed % 3]; + } + + function _getRandomRequest(uint256 _seed) internal view returns (bytes32) { + if (_ghost_requests.length == 0) return bytes32(0); + return _ghost_requests[_seed % _ghost_requests.length]; + } + + function _getRandomActiveResponse(bytes32 _requestId) internal view returns (IOracle.Response memory) { + bytes32 responseId = _ghost_activeResponses[_requestId]; + return _ghost_responseData[responseId]; + } + + function _getRandomDispute(bytes32 _requestId, uint256 _seed) internal view returns (IOracle.Dispute memory) { + bytes32[] storage disputes = _ghost_disputes[_requestId]; + if (disputes.length == 0) { + return IOracle.Dispute(address(0), address(0), bytes32(0), 0); + } + bytes32 disputeId = disputes[_seed % disputes.length]; + return _ghost_disputeData[disputeId]; + } + + // Events to track state changes + event RequestCreated(bytes32 indexed requestId, uint256 epoch, string chainId); + event ResponseProposed(bytes32 indexed requestId, bytes32 indexed responseId); + event DisputeCreated(bytes32 indexed requestId, bytes32 indexed responseId, bytes32 indexed disputeId); + event ResponseFinalized(bytes32 indexed requestId, bytes32 indexed responseId); + event DisputeResolved(bytes32 indexed disputeId, IOracle.DisputeStatus status); +} diff --git a/test/invariants/handlers/HandlerArbitrable.t.sol b/test/invariants/handlers/HandlerArbitrable.t.sol new file mode 100644 index 0000000..7fb7cfd --- /dev/null +++ b/test/invariants/handlers/HandlerArbitrable.t.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler} from './BaseHandler.t.sol'; + +contract HandlerArbitrable is BaseHandler { + function handleValidateArbitrator(uint256 _actorSeed) external { + address caller = _pickActor(_actorSeed); + arbitrable.validateArbitrator(caller); + } + + function handleSetArbitrator(uint256 _actorSeed) external { + address newArbitrator = _pickActor(_actorSeed); + arbitrable.setArbitrator(newArbitrator); + } + + function handleSetPendingCouncil(uint256 _actorSeed) external { + address pendingCouncil = _pickActor(_actorSeed); + arbitrable.setPendingCouncil(pendingCouncil); + } + + function handleConfirmCouncil() external { + arbitrable.confirmCouncil(); + } +} diff --git a/test/invariants/handlers/HandlerBondEscalationModule.t.sol b/test/invariants/handlers/HandlerBondEscalationModule.t.sol new file mode 100644 index 0000000..791e280 --- /dev/null +++ b/test/invariants/handlers/HandlerBondEscalationModule.t.sol @@ -0,0 +1,92 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IOracle} from './BaseHandler.t.sol'; + +contract HandlerBondEscalationModule is BaseHandler { + function handleDisputeResponseBondEscalationModule(uint256 _requestSeed, uint256 _actorSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return; + + bytes32 responseId = _ghost_activeResponses[requestId]; + if (responseId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[responseId]; + if (_ghost_finalizedResponses[responseId]) return; + + // Create dispute data + address disputer = _pickActor(_actorSeed); + uint256 bond = _boundAmount(1e18); + + IOracle.Dispute memory dispute = + IOracle.Dispute({disputer: disputer, proposer: msg.sender, responseId: responseId, requestId: requestId}); + + // Submit dispute + bondEscalationModule.disputeResponse(_ghost_requestData[requestId], response, dispute); + + // Track dispute + bytes32 disputeId = keccak256(abi.encode(dispute)); + _ghost_disputes[requestId].push(disputeId); + _ghost_disputeData[disputeId] = dispute; + _ghost_bonds[disputer][requestId] = bond; + _ghost_disputeStatuses[disputeId] = IOracle.DisputeStatus.Escalated; + + emit DisputeCreated(requestId, responseId, disputeId); + } + + function handleOnDisputeStatusChange(uint256 _requestSeed, uint256 _disputeIndex) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + bytes32 disputeId = keccak256(abi.encode(dispute)); + bondEscalationModule.onDisputeStatusChange( + disputeId, _ghost_requestData[requestId], _ghost_responseData[dispute.responseId], dispute + ); + } + + function handlePledgeForDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return; + + address pledger = _pickActor(_actorSeed); + bondEscalationModule.pledgeForDispute(_ghost_requestData[requestId], dispute); + + bytes32 disputeId = keccak256(abi.encode(dispute)); + _ghost_pledgesFor[pledger][disputeId] += _boundAmount(1e18); + } + + function handlePledgeAgainstDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return; + + address pledger = _pickActor(_actorSeed); + bondEscalationModule.pledgeAgainstDispute(_ghost_requestData[requestId], dispute); + + bytes32 disputeId = keccak256(abi.encode(dispute)); + _ghost_pledgesAgainst[pledger][disputeId] += _boundAmount(1e18); + } + + function handleSettleBondEscalation(uint256 _requestSeed, uint256 _disputeIndex) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[dispute.responseId]; + bondEscalationModule.settleBondEscalation(_ghost_requestData[requestId], response, dispute); + } +} diff --git a/test/invariants/handlers/HandlerBondedResponseModule.t.sol b/test/invariants/handlers/HandlerBondedResponseModule.t.sol new file mode 100644 index 0000000..53f36fc --- /dev/null +++ b/test/invariants/handlers/HandlerBondedResponseModule.t.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IOracle} from './BaseHandler.t.sol'; + +contract HandlerBondedResponseModule is BaseHandler { + function handlePropose(uint256 _requestSeed, uint256 _blockNumber, uint256 _actorSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return; + if (_ghost_activeResponses[requestId] != bytes32(0)) return; // Only one active response at a time + + // Create response data + address proposer = _pickActor(_actorSeed); + _blockNumber = _boundBlockNumber(_blockNumber); + + IOracle.Request memory request = _ghost_requestData[requestId]; + IOracle.Response memory response = + IOracle.Response({requestId: requestId, response: abi.encode(_blockNumber), proposer: proposer}); + + // Submit response + bondedResponseModule.propose(request, response, proposer); + + // Track response + bytes32 responseId = keccak256(abi.encode(response)); + _ghost_activeResponses[requestId] = responseId; + _ghost_responseData[responseId] = response; + + emit ResponseProposed(requestId, responseId); + } + + function handleFinalizeRequestResponseModule(uint256 _requestSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return; + + bytes32 responseId = _ghost_activeResponses[requestId]; + if (responseId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[responseId]; + if (_ghost_finalizedResponses[responseId]) return; + + bondedResponseModule.finalizeRequest(_ghost_requestData[requestId], response, response.proposer); + + _ghost_finalizedResponses[responseId] = true; + emit ResponseFinalized(requestId, responseId); + } + + function handleReleaseUnutilizedResponse(uint256 _requestSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Response memory response = _getRandomActiveResponse(requestId); + if (response.requestId == bytes32(0)) return; + + bondedResponseModule.releaseUnutilizedResponse(_ghost_requestData[requestId], response); + } +} diff --git a/test/invariants/handlers/HandlerCouncilArbitrator.t.sol b/test/invariants/handlers/HandlerCouncilArbitrator.t.sol new file mode 100644 index 0000000..b1129e0 --- /dev/null +++ b/test/invariants/handlers/HandlerCouncilArbitrator.t.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IOracle} from './BaseHandler.t.sol'; + +contract HandlerCouncilArbitrator is BaseHandler { + function handleResolve(uint256 _requestSeed, uint256 _disputeIndex) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[dispute.responseId]; + councilArbitrator.resolve(_ghost_requestData[requestId], response, dispute); + } + + function handleArbitrateDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _statusSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + bytes32 disputeId = keccak256(abi.encode(dispute)); + + // Generate a valid dispute status (NoResolution, Won, Lost) + IOracle.DisputeStatus status = IOracle.DisputeStatus( + bound(_statusSeed, uint8(IOracle.DisputeStatus.NoResolution), uint8(IOracle.DisputeStatus.Lost)) + ); + + councilArbitrator.arbitrateDispute(disputeId, status); + _ghost_disputeStatuses[disputeId] = status; + + emit DisputeResolved(disputeId, status); + } +} diff --git a/test/invariants/handlers/HandlerEBOFinalityModule.t.sol b/test/invariants/handlers/HandlerEBOFinalityModule.t.sol new file mode 100644 index 0000000..26d7ecf --- /dev/null +++ b/test/invariants/handlers/HandlerEBOFinalityModule.t.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IEBORequestCreator, IOracle} from './BaseHandler.t.sol'; + +contract HandlerEBOFinalityModule is BaseHandler { + function handleFinalizeRequestFinalityModule(uint256 _requestSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return; + + bytes32 responseId = _ghost_activeResponses[requestId]; + if (responseId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[responseId]; + eboFinalityModule.finalizeRequest(_ghost_requestData[requestId], response, response.proposer); + } + + function handleAmendEpoch( + uint256 _epoch, + uint256[] calldata _chainIdSeeds, + uint256[] calldata _blockNumbers + ) external { + if (_chainIdSeeds.length != _blockNumbers.length) return; + + _epoch = _boundEpoch(_epoch); + string[] memory chainIds = new string[](_chainIdSeeds.length); + uint256[] memory blockNums = new uint256[](_blockNumbers.length); + + for (uint256 i = 0; i < _chainIdSeeds.length; i++) { + chainIds[i] = _generateChainId(_chainIdSeeds[i]); + blockNums[i] = _boundBlockNumber(_blockNumbers[i]); + } + + eboFinalityModule.amendEpoch(_epoch, chainIds, blockNums); + } + + function handleAddEBORequestCreatorFinalityModule(uint256 _actorSeed) external { + address creator = _pickActor(_actorSeed); + eboFinalityModule.addEBORequestCreator(IEBORequestCreator(creator)); + } + + function handleRemoveEBORequestCreatorFinalityModule(uint256 _actorSeed) external { + address creator = _pickActor(_actorSeed); + eboFinalityModule.removeEBORequestCreator(IEBORequestCreator(creator)); + } +} diff --git a/test/invariants/handlers/HandlerEBORequestCreator.t.sol b/test/invariants/handlers/HandlerEBORequestCreator.t.sol new file mode 100644 index 0000000..2104da1 --- /dev/null +++ b/test/invariants/handlers/HandlerEBORequestCreator.t.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import { + BaseHandler, + IArbitratorModule, + IBondEscalationModule, + IBondedResponseModule, + IEBORequestModule, + IEpochManager, + IOracle +} from './BaseHandler.t.sol'; + +contract HandlerEBORequestCreator is BaseHandler { + function handleCreateRequest(uint256 _epoch, uint256 _chainIdSeed) external { + _epoch = _boundEpoch(_epoch); + string memory chainId = _generateChainId(_chainIdSeed); + + // Prevent duplicate chainId for same epoch + if (_ghost_epochChainIds[_epoch][chainId]) return; + + // Create request via EBORequestCreator + eboRequestCreator.createRequest(_epoch, chainId); + + // Get current request data + IOracle.Request memory requestData = eboRequestCreator.getRequestData(); + + // Calculate request ID using same logic as Oracle + bytes32 requestId = keccak256(abi.encode(requestData)); + + // Track the request + _ghost_requests.push(requestId); + _ghost_requestData[requestId] = requestData; + _ghost_validRequests[requestId] = true; + _ghost_epochChainIds[_epoch][chainId] = true; + + emit RequestCreated(requestId, _epoch, chainId); + } + + function handleAddChain(uint256 _chainIdSeed) external { + string memory chainId = _generateChainId(_chainIdSeed); + eboRequestCreator.addChain(chainId); + } + + function handleRemoveChain(uint256 _chainIdSeed) external { + string memory chainId = _generateChainId(_chainIdSeed); + eboRequestCreator.removeChain(chainId); + } + + function handleSetRequestModuleData( + uint256 _actorSeed, + IEBORequestModule.RequestParameters calldata _params + ) external { + address module = _pickActor(_actorSeed); + eboRequestCreator.setRequestModuleData(module, _params); + } + + function handleSetResponseModuleData( + uint256 _actorSeed, + IBondedResponseModule.RequestParameters calldata _params + ) external { + address module = _pickActor(_actorSeed); + eboRequestCreator.setResponseModuleData(module, _params); + } + + function handleSetDisputeModuleData( + uint256 _actorSeed, + IBondEscalationModule.RequestParameters calldata _params + ) external { + address module = _pickActor(_actorSeed); + eboRequestCreator.setDisputeModuleData(module, _params); + } + + function handleSetResolutionModuleData( + uint256 _actorSeed, + IArbitratorModule.RequestParameters calldata _params + ) external { + address module = _pickActor(_actorSeed); + eboRequestCreator.setResolutionModuleData(module, _params); + } + + function handleSetFinalityModuleData(uint256 _actorSeed) external { + address module = _pickActor(_actorSeed); + eboRequestCreator.setFinalityModuleData(module); + } + + function handleSetEpochManager(uint256 _actorSeed) external { + address manager = _pickActor(_actorSeed); + eboRequestCreator.setEpochManager(IEpochManager(manager)); + } +} diff --git a/test/invariants/handlers/HandlerEBORequestModule.t.sol b/test/invariants/handlers/HandlerEBORequestModule.t.sol new file mode 100644 index 0000000..ce0c9e0 --- /dev/null +++ b/test/invariants/handlers/HandlerEBORequestModule.t.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IEBORequestCreator} from './BaseHandler.t.sol'; + +contract HandlerEBORequestModule is BaseHandler { + function handleAddEBORequestCreatorRequestModule(uint256 _actorSeed) external { + address creator = _pickActor(_actorSeed); + eboRequestModule.addEBORequestCreator(IEBORequestCreator(creator)); + } + + function handleRemoveEBORequestCreatorRequestModule(uint256 _actorSeed) external { + address creator = _pickActor(_actorSeed); + eboRequestModule.removeEBORequestCreator(IEBORequestCreator(creator)); + } +} diff --git a/test/invariants/handlers/HandlerHorizonAccountingExtension.t.sol b/test/invariants/handlers/HandlerHorizonAccountingExtension.t.sol new file mode 100644 index 0000000..fb6dfd1 --- /dev/null +++ b/test/invariants/handlers/HandlerHorizonAccountingExtension.t.sol @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IOracle} from './BaseHandler.t.sol'; + +contract HandlerHorizonAccountingExtension is BaseHandler { + function handleApproveModule(uint256 _actorSeed) external { + address module = _pickActor(_actorSeed); + horizonAccountingExtension.approveModule(module); + } + + function handleRevokeModule(uint256 _actorSeed) external { + address module = _pickActor(_actorSeed); + horizonAccountingExtension.revokeModule(module); + } + + function handlePledge(uint256 _pledgerSeed, uint256 _requestSeed, uint256 _disputeIndex, uint256 _amount) external { + address pledger = _pickActor(_pledgerSeed); + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + _amount = _boundAmount(_amount); + horizonAccountingExtension.pledge(pledger, _ghost_requestData[requestId], dispute, GRT, _amount); + } + + function handleOnSettleBondEscalation( + uint256 _requestSeed, + uint256 _disputeIndex, + uint256 _amountPerPledger, + uint256 _winningPledgersLength + ) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + _amountPerPledger = _boundAmount(_amountPerPledger); + horizonAccountingExtension.onSettleBondEscalation( + _ghost_requestData[requestId], dispute, GRT, _amountPerPledger, _winningPledgersLength + ); + } + + function handleClaimEscalationReward(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + address pledger = _pickActor(_actorSeed); + bytes32 disputeId = keccak256(abi.encode(dispute)); + + horizonAccountingExtension.claimEscalationReward(disputeId, pledger); + } + + function handlePay(uint256 _requestSeed, uint256 _payerSeed, uint256 _receiverSeed, uint256 _amount) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + address payer = _pickActor(_payerSeed); + address receiver = _pickActor(_receiverSeed); + _amount = _boundAmount(_amount); + + horizonAccountingExtension.pay(requestId, payer, receiver, GRT, _amount); + } + + function handleBond(uint256 _bonderSeed, uint256 _requestSeed, uint256 _amount) external { + address bonder = _pickActor(_bonderSeed); + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + _amount = _boundAmount(_amount); + horizonAccountingExtension.bond(bonder, requestId, GRT, _amount); + } + + function handleBondWithSender( + uint256 _bonderSeed, + uint256 _requestSeed, + uint256 _amount, + uint256 _senderSeed + ) external { + address bonder = _pickActor(_bonderSeed); + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + _amount = _boundAmount(_amount); + address sender = _pickActor(_senderSeed); + + horizonAccountingExtension.bond(bonder, requestId, GRT, _amount, sender); + } + + function handleRelease(uint256 _bonderSeed, uint256 _requestSeed, uint256 _amount) external { + address bonder = _pickActor(_bonderSeed); + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + _amount = _boundAmount(_amount); + horizonAccountingExtension.release(bonder, requestId, GRT, _amount); + } + + function handleSlash( + uint256 _requestSeed, + uint256 _disputeIndex, + uint256 _usersToSlash, + uint256 _maxUsersToCheck + ) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + bytes32 disputeId = keccak256(abi.encode(dispute)); + _usersToSlash = bound(_usersToSlash, 1, 10); + _maxUsersToCheck = bound(_maxUsersToCheck, _usersToSlash, 20); + + horizonAccountingExtension.slash(disputeId, _usersToSlash, _maxUsersToCheck); + } + + function handleSetMaxUsersToCheck(uint256 _maxUsers) external { + _maxUsers = bound(_maxUsers, 1, 100); + horizonAccountingExtension.setMaxUsersToCheck(uint128(_maxUsers)); + } +} diff --git a/test/invariants/handlers/HandlerOracle.t.sol b/test/invariants/handlers/HandlerOracle.t.sol new file mode 100644 index 0000000..1bff9c2 --- /dev/null +++ b/test/invariants/handlers/HandlerOracle.t.sol @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {BaseHandler, IOracle} from './BaseHandler.t.sol'; + +contract HandlerOracle is BaseHandler { + function handleCreateRequest(uint256 _requestSeed, bytes32 _previousId) external returns (bytes32) { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return bytes32(0); + + return oracle.createRequest(_ghost_requestData[requestId], _previousId); + } + + function handleCreateRequests( + uint256[] calldata _requestSeeds, + bytes32[] calldata _previousIds + ) external returns (bytes32[] memory) { + if (_requestSeeds.length != _previousIds.length) { + return new bytes32[](0); + } + + IOracle.Request[] memory requests = new IOracle.Request[](_requestSeeds.length); + for (uint256 i = 0; i < _requestSeeds.length; i++) { + bytes32 requestId = _getRandomRequest(_requestSeeds[i]); + if (requestId == bytes32(0)) return new bytes32[](0); + requests[i] = _ghost_requestData[requestId]; + } + + return oracle.createRequests(requests, _previousIds); + } + + function handleProposeResponse( + uint256 _requestSeed, + uint256 _blockNumber, + uint256 _actorSeed + ) external returns (bytes32) { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) { + return bytes32(0); + } + if (_ghost_activeResponses[requestId] != bytes32(0)) return bytes32(0); + + address proposer = _pickActor(_actorSeed); + _blockNumber = _boundBlockNumber(_blockNumber); + + IOracle.Request memory request = _ghost_requestData[requestId]; + IOracle.Response memory response = + IOracle.Response({requestId: requestId, response: abi.encode(_blockNumber), proposer: proposer}); + + bytes32 responseId = oracle.proposeResponse(request, response); + + // Track response + _ghost_activeResponses[requestId] = responseId; + _ghost_responseData[responseId] = response; + + emit ResponseProposed(requestId, responseId); + + return responseId; + } + + function handleDisputeResponseOracle(uint256 _requestSeed, uint256 _actorSeed) external returns (bytes32) { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) { + return bytes32(0); + } + + bytes32 responseId = _ghost_activeResponses[requestId]; + if (responseId == bytes32(0)) return bytes32(0); + + IOracle.Response memory response = _ghost_responseData[responseId]; + if (_ghost_finalizedResponses[responseId]) return bytes32(0); + + address disputer = _pickActor(_actorSeed); + uint256 bond = _boundAmount(1e18); + + IOracle.Dispute memory dispute = + IOracle.Dispute({disputer: disputer, proposer: response.proposer, requestId: requestId, responseId: responseId}); + + bytes32 disputeId = oracle.disputeResponse(_ghost_requestData[requestId], response, dispute); + + // Track dispute + _ghost_disputes[requestId].push(disputeId); + _ghost_disputeData[disputeId] = dispute; + _ghost_bonds[disputer][requestId] = bond; + _ghost_disputeStatuses[disputeId] = IOracle.DisputeStatus.Escalated; + + emit DisputeCreated(requestId, responseId, disputeId); + + return disputeId; + } + + function handleEscalateDispute(uint256 _requestSeed, uint256 _disputeIndex) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return; + + IOracle.Response memory response = _ghost_responseData[dispute.responseId]; + oracle.escalateDispute(_ghost_requestData[requestId], response, dispute); + } + + function handleResolveDispute(uint256 _requestSeed, uint256 _disputeIndex) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[dispute.responseId]; + oracle.resolveDispute(_ghost_requestData[requestId], response, dispute); + } + + function handleUpdateDisputeStatus(uint256 _requestSeed, uint256 _disputeIndex, uint256 _statusSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex); + if (dispute.requestId == bytes32(0)) return; + + // Generate a valid dispute status (NoResolution, Won, Lost) + IOracle.DisputeStatus status = IOracle.DisputeStatus( + bound(_statusSeed, uint8(IOracle.DisputeStatus.NoResolution), uint8(IOracle.DisputeStatus.Lost)) + ); + + IOracle.Response memory response = _ghost_responseData[dispute.responseId]; + oracle.updateDisputeStatus(_ghost_requestData[requestId], response, dispute, status); + + bytes32 disputeId = keccak256(abi.encode(dispute)); + _ghost_disputeStatuses[disputeId] = status; + + emit DisputeResolved(disputeId, status); + } + + function handleFinalize(uint256 _requestSeed) external { + bytes32 requestId = _getRandomRequest(_requestSeed); + if (requestId == bytes32(0)) return; + + bytes32 responseId = _ghost_activeResponses[requestId]; + if (responseId == bytes32(0)) return; + + IOracle.Response memory response = _ghost_responseData[responseId]; + oracle.finalize(_ghost_requestData[requestId], response); + + _ghost_finalizedResponses[responseId] = true; + emit ResponseFinalized(requestId, responseId); + } +} diff --git a/test/invariants/handlers/HandlerParent.t.sol b/test/invariants/handlers/HandlerParent.t.sol new file mode 100644 index 0000000..33b3297 --- /dev/null +++ b/test/invariants/handlers/HandlerParent.t.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {HandlerArbitrable} from './HandlerArbitrable.t.sol'; + +import {HandlerBondEscalationModule} from './HandlerBondEscalationModule.t.sol'; +import {HandlerBondedResponseModule} from './HandlerBondedResponseModule.t.sol'; +import {HandlerCouncilArbitrator} from './HandlerCouncilArbitrator.t.sol'; +import {HandlerEBOFinalityModule} from './HandlerEBOFinalityModule.t.sol'; +import {HandlerEBORequestCreator} from './HandlerEBORequestCreator.t.sol'; +import {HandlerEBORequestModule} from './HandlerEBORequestModule.t.sol'; +import {HandlerHorizonAccountingExtension} from './HandlerHorizonAccountingExtension.t.sol'; +import {HandlerOracle} from './HandlerOracle.t.sol'; + +contract HandlerParent is + HandlerArbitrable, + HandlerBondedResponseModule, + HandlerBondEscalationModule, + HandlerCouncilArbitrator, + HandlerEBOFinalityModule, + HandlerEBORequestCreator, + HandlerEBORequestModule, + HandlerHorizonAccountingExtension, + HandlerOracle +{ + //solhint-disable no-empty-blocks + constructor() {} +} diff --git a/test/invariants/helpers/Actors.t.sol b/test/invariants/helpers/Actors.t.sol new file mode 100644 index 0000000..5b0612b --- /dev/null +++ b/test/invariants/helpers/Actors.t.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.19; + +import {Utils} from './Utils.t.sol'; + +contract Actors is Utils { + address[] internal _ghost_actors = [ + address(0x10000), + address(0x20000), + address(0x30000), + address(0x40000), + address(0x50000), + address(0x60000), + address(0x70000), + address(0x80000), + address(0x90000), + address(0xa0000) + ]; + + event ActorsLog(string); + + function _pickActor(uint256 _seed) internal view returns (address) { + return _ghost_actors[_seed % _ghost_actors.length]; + } +} diff --git a/test/invariants/helpers/FuzzERC20.sol b/test/invariants/helpers/FuzzERC20.sol new file mode 100644 index 0000000..ed42f9d --- /dev/null +++ b/test/invariants/helpers/FuzzERC20.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import {ERC20, IERC20} from '@openzeppelin/contracts/token/ERC20/ERC20.sol'; + +contract FuzzERC20 is ERC20 { + address testContract; + + constructor() ERC20('FuzzERC20', 'FuzzERC20') { + testContract = msg.sender; + } + + function transfer(address to, uint256 amount) public override returns (bool) { + address owner = _msgSender(); + + // FuzzTest has an infinite mint + if (owner == testContract) { + _mint(testContract, amount); + } + + _transfer(owner, to, amount); + return true; + } + + function mint(address _to, uint256 _amount) public { + _mint(_to, _amount); + } + + function burn(address _from, uint256 _amount) public { + _burn(_from, _amount); + } +} diff --git a/test/invariants/helpers/IStdCheats.sol b/test/invariants/helpers/IStdCheats.sol new file mode 100644 index 0000000..cdaa531 --- /dev/null +++ b/test/invariants/helpers/IStdCheats.sol @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.19; + +interface IStdCheats { + // Set block.timestamp + function warp(uint256) external; + + // Set block.number + function roll(uint256) external; + + // Set block.basefee + function fee(uint256) external; + + // Set block.difficulty and block.prevrandao + function difficulty(uint256) external; + + // Set block.chainid + function chainId(uint256) external; + + // Sets the block.coinbase + function coinbase(address) external; + + // Loads a storage slot from an address + function load(address account, bytes32 slot) external returns (bytes32); + + // Stores a value to an address' storage slot + function store(address account, bytes32 slot, bytes32 value) external; + + // Sets the *next* call's msg.sender to be the input address + function prank(address) external; + + // Set msg.sender to the input address until the current call exits + function prankHere(address) external; + + // Sets an address' balance + function deal(address who, uint256 newBalance) external; + + // Sets an address' code + function etch(address who, bytes calldata code) external; + + // Signs data + function sign(uint256 privateKey, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s); + + // Computes address for a given private key + function addr(uint256 privateKey) external returns (address); + + // Gets the nonce of an account + function getNonce(address account) external returns (uint64); + + // Sets the nonce of an account + // The new nonce must be higher than the current nonce of the account + function setNonce(address account, uint64 nonce) external; + + // Performs a foreign function call via terminal + function ffi(string[] calldata) external returns (bytes memory); + + // Take a snapshot of the current state of the EVM + function snapshot() external returns (uint256); + + // Revert state back to a snapshot + function revertTo(uint256) external returns (bool); + + // Convert Solidity types to strings + function toString(address) external returns (string memory); + + function toString(bytes calldata) external returns (string memory); + + function toString(bytes32) external returns (string memory); + + function toString(bool) external returns (string memory); + + function toString(uint256) external returns (string memory); + + function toString(int256) external returns (string memory); + + // Convert strings into Solidity types + function parseBytes(string memory) external returns (bytes memory); + + function parseBytes32(string memory) external returns (bytes32); + + function parseAddress(string memory) external returns (address); + + function parseUint(string memory) external returns (uint256); + + function parseInt(string memory) external returns (int256); + + function parseBool(string memory) external returns (bool); +} diff --git a/test/invariants/helpers/MockEpochManager.t.sol b/test/invariants/helpers/MockEpochManager.t.sol new file mode 100644 index 0000000..ffd54ea --- /dev/null +++ b/test/invariants/helpers/MockEpochManager.t.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +contract MockEpochManager { + uint256 public currentEpoch; + + constructor(uint256 _startEpoch) { + currentEpoch = _startEpoch; + } + + function setEpoch(uint256 _epoch) external { + currentEpoch = _epoch; + } +} diff --git a/test/invariants/helpers/MockHorizonStaking.t.sol b/test/invariants/helpers/MockHorizonStaking.t.sol new file mode 100644 index 0000000..3ab32a3 --- /dev/null +++ b/test/invariants/helpers/MockHorizonStaking.t.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol'; +import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol'; + +contract MockHorizonStaking { + IERC20 public immutable GRT; + mapping(address => mapping(address => IHorizonStaking.Provision)) public provisions; + + constructor(IERC20 _grt) { + GRT = _grt; + } + + function getProvision( + address _serviceProvider, + address _verifier + ) external view returns (IHorizonStaking.Provision memory) { + return provisions[_serviceProvider][_verifier]; + } + + function provision( + address _serviceProvider, + address _verifier, + uint256 _tokens, + uint32 _maxVerifierCut, + uint64 _thawingPeriod + ) external { + provisions[_serviceProvider][_verifier] = IHorizonStaking.Provision({ + tokens: _tokens, + tokensThawing: 0, + sharesThawing: 0, + maxVerifierCut: _maxVerifierCut, + thawingPeriod: _thawingPeriod, + createdAt: uint64(block.timestamp), + maxVerifierCutPending: 0, + thawingPeriodPending: 0 + }); + } + + function slash(address, uint256, uint256 _tokensVerifier, address _verifierDestination) external { + GRT.transfer(_verifierDestination, _tokensVerifier); + } +} diff --git a/test/invariants/helpers/Utils.t.sol b/test/invariants/helpers/Utils.t.sol new file mode 100644 index 0000000..55f830b --- /dev/null +++ b/test/invariants/helpers/Utils.t.sol @@ -0,0 +1,90 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import {IStdCheats} from './IStdCheats.sol'; + +// override forge-std: +// - vm, avoiding unsupported cheatcode +// - assertEq, allowing custom message in Medusa +// - assertTrue, allowing custom message in Medusa +// - makeAddr, bypassing the limitation of non-existing label cheatcode +// etc +contract Utils { + IStdCheats internal vm = IStdCheats(address(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D)); + + event TestFailure(string reason); + event AddressMade(string label, address addressGenerated); + + function makeAddr(string memory label) internal returns (address) { + address genAddress = address(uint160(uint256(keccak256(abi.encodePacked(label))))); + emit AddressMade(label, genAddress); + return genAddress; + } + + // same as forge-std + function bound(uint256 x, uint256 min, uint256 max) internal pure returns (uint256 result) { + //solhint-disable custom-errors + require(min <= max, 'StdUtils bound(uint256,uint256,uint256): Max is less than min.'); + + uint256 UINT256_MAX = 2 ** 256 - 1; + + // If x is between min and max, return x directly. This is to ensure that dictionary values + // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188 + if (x >= min && x <= max) return x; + + uint256 size = max - min + 1; + + // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side. + // This helps ensure coverage of the min/max values. + if (x <= 3 && size > x) return min + x; + if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) { + return max - (UINT256_MAX - x); + } + + // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive. + if (x > max) { + uint256 diff = x - max; + uint256 rem = diff % size; + if (rem == 0) return max; + result = min + rem - 1; + } else if (x < min) { + uint256 diff = min - x; + uint256 rem = diff % size; + if (rem == 0) return min; + result = max - rem + 1; + } + } + + function assertEq(uint256 a, uint256 b) internal { + assertEq(a, b, 'assertEq: a != b'); + } + + function assertEq(uint256 a, uint256 b, string memory reason) internal { + if (a != b) { + emit TestFailure(reason); + assert(false); + } + } + + function assertEq(address a, address b) internal { + assertEq(a, b, 'assertEq: a != b'); + } + + function assertEq(address a, address b, string memory reason) internal { + if (a != b) { + emit TestFailure(reason); + assert(false); + } + } + + function assertTrue(bool a) internal { + assertTrue(a, 'assertTrue: !a'); + } + + function assertTrue(bool a, string memory reason) internal { + if (!a) { + emit TestFailure(reason); + assert(false); + } + } +} diff --git a/test/invariants/properties/PropertyA.t.sol b/test/invariants/properties/PropertyA.t.sol new file mode 100644 index 0000000..8cad264 --- /dev/null +++ b/test/invariants/properties/PropertyA.t.sol @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {HandlerParent} from '../handlers/HandlerParent.t.sol'; + +contract PropertyA is HandlerParent { + //solhint-disable no-empty-blocks + constructor() {} +} diff --git a/test/invariants/properties/PropertyParent.t.sol b/test/invariants/properties/PropertyParent.t.sol new file mode 100644 index 0000000..755f405 --- /dev/null +++ b/test/invariants/properties/PropertyParent.t.sol @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.26; + +import {PropertyA} from './PropertyA.t.sol'; + +contract PropertyParent is PropertyA { + //solhint-disable no-empty-blocks + constructor() {} +} diff --git a/yarn.lock b/yarn.lock index e1288e9..84f1b7d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1732,9 +1732,9 @@ solhint-community@4.0.0: optionalDependencies: prettier "^2.8.3" -"solmate@git+https://github.com/transmissions11/solmate.git#bfc9c25865a274a7827fea5abf6e4fb64fc64e6c": +"solmate@https://github.com/transmissions11/solmate.git#bfc9c25865a274a7827fea5abf6e4fb64fc64e6c": version "6.1.0" - resolved "git+https://github.com/transmissions11/solmate.git#bfc9c25865a274a7827fea5abf6e4fb64fc64e6c" + resolved "https://github.com/transmissions11/solmate.git#bfc9c25865a274a7827fea5abf6e4fb64fc64e6c" sort-object-keys@^1.1.3: version "1.1.3" From 1b537634ea6ae0adbe3504cca70f619ff3abe189 Mon Sep 17 00:00:00 2001 From: drgorillamd <83670532+drgorillamd@users.noreply.github.com> Date: Sun, 10 Nov 2024 23:30:50 +0100 Subject: [PATCH 03/28] test(medusa): add lib to crytic compile --- medusa.json | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 medusa.json diff --git a/medusa.json b/medusa.json new file mode 100644 index 0000000..6bb53b5 --- /dev/null +++ b/medusa.json @@ -0,0 +1,87 @@ +{ + "fuzzing": { + "workers": 10, + "workerResetLimit": 50, + "timeout": 0, + "testLimit": 0, + "shrinkLimit": 100000, + "callSequenceLength": 100, + "corpusDirectory": "test/invariants/fuzz/corpus", + "coverageEnabled": true, + "targetContracts": ["FuzzTest"], + "predeployedContracts": {}, + "targetContractsBalances": [], + "constructorArgs": {}, + "deployerAddress": "0x30000", + "senderAddresses": [ + "0x10000", + "0x20000", + "0x30000", + "0x40000", + "0x50000", + "0x60000", + "0x70000", + "0x80000", + "0x90000", + "0xa0000" + ], + "blockNumberDelayMax": 60480, + "blockTimestampDelayMax": 604800, + "blockGasLimit": 125000000, + "transactionGasLimit": 12500000, + "testing": { + "stopOnFailedTest": true, + "stopOnFailedContractMatching": false, + "stopOnNoTests": true, + "testAllContracts": false, + "traceAll": false, + "assertionTesting": { + "enabled": true, + "testViewMethods": true, + "panicCodeConfig": { + "failOnCompilerInsertedPanic": false, + "failOnAssertion": true, + "failOnArithmeticUnderflow": false, + "failOnDivideByZero": false, + "failOnEnumTypeConversionOutOfBounds": false, + "failOnIncorrectStorageAccess": false, + "failOnPopEmptyArray": false, + "failOnOutOfBoundsArrayAccess": false, + "failOnAllocateTooMuchMemory": false, + "failOnCallUninitializedVariable": false + } + }, + "propertyTesting": { + "enabled": true, + "testPrefixes": ["property_"] + }, + "optimizationTesting": { + "enabled": true, + "testPrefixes": ["optimize_"] + }, + "targetFunctionSignatures": [], + "excludeFunctionSignatures": [""] + }, + "chainConfig": { + "codeSizeCheckDisabled": true, + "cheatCodes": { + "cheatCodesEnabled": true, + "enableFFI": false + } + } + }, + "compilation": { + "platform": "crytic-compile", + "platformConfig": { + "target": "test/invariants/FuzzTest.t.sol", + "solcVersion": "", + "exportDirectory": "", + "args": ["--compile-libraries=(ValidatorLib,0xf0)"] + } + }, + "logging": { + "level": "info", + "logDirectory": "", + "noColor": false + } +} From 98de161c55e0caa228d054de7c15a7272eb64c96 Mon Sep 17 00:00:00 2001 From: drgorillamd <83670532+drgorillamd@users.noreply.github.com> Date: Sun, 10 Nov 2024 23:50:06 +0100 Subject: [PATCH 04/28] test(medusa): prop 0 sanity check ok --- test/invariants/FuzzTest.t.sol | 2 +- ...-9d2d56aa-59cf-4190-ad90-113fcac7c07b.json | 25 + ...-1740f705-594e-4ba4-86b9-a7397841852a.json | 101 + ...-f241289c-0658-4e22-beca-b8ee18fa1c5e.json | 205 + ...-1f6e1bdd-fc3f-4a44-b6a7-36b505a2bc08.json | 222 + ...-cb45345a-eb47-4796-90de-54189aa91906.json | 297 + ...-ade8ba36-35c6-4c26-a794-1358fc248c91.json | 336 + ...-d3487e2f-b5c3-4ba6-a4ad-bd45f3059e7b.json | 457 + ...-87a8141e-a121-46dc-a00f-776de71bb0b1.json | 502 + ...-73ba1036-f664-420c-8d38-fc474d664848.json | 432 + ...-7b0538fd-d4b9-43b3-92c7-691cc391e386.json | 521 + ...-d68a6881-2741-489a-b7bd-a28264c8897a.json | 635 + ...-d99cfb6e-8259-4051-98fc-484c2b1166c0.json | 529 + ...-cba6387c-87fd-4774-b883-b02dc21edbe1.json | 501 + ...-741509d7-8c95-4626-b5c3-c17625f529b5.json | 829 + ...-5693c2ca-1af1-4296-b5e4-039401f77778.json | 552 + ...-7e10b2dd-f253-4d1d-b859-ec8a710b55b8.json | 741 + ...-2901a619-fff5-448f-99fe-6220b810c578.json | 849 + ...-8cf92baa-a0a3-4010-9457-96b2f6261d69.json | 862 + ...-125ef6cd-6d4b-4800-ad62-0f4317b13564.json | 1015 + ...-ab0f8e03-6145-4021-98bc-bc4414e1edac.json | 80 + ...-2b517ff1-9d51-4eb3-9295-59aef5edfe82.json | 25 + ...-871a08c3-b8b7-48ec-b0f3-8f40a4b63667.json | 101 + ...-58712d84-87f6-4a52-b17f-0a1efd24dc9a.json | 104 + ...-b61b8318-0b73-4814-96b9-ffd4a7bf2c0a.json | 103 + ...-b4c04c00-0029-44d8-a7a6-df5aa8196990.json | 133 + ...-2dfcb57a-f822-4ba8-935c-c6ef623952cf.json | 49 + ...-e8877634-86e5-4563-9155-7f538767b281.json | 103 + ...-9ce76d8d-3fdf-4be0-a718-67783ed4f0bd.json | 150 + ...-2f49b3b2-64e5-483d-8360-df43563d2ae4.json | 149 + ...-69edad03-8dfd-4c82-a029-e43ba88f8c78.json | 154 + ...-7c923095-534b-4a11-b54e-2d2ef4e1b46b.json | 156 + ...-b159dfaa-e3ec-46e5-98f1-23e5b2c960d2.json | 103 + ...-cdb80630-09f6-4557-a579-1f22c6aad840.json | 158 + ...-457a1374-bc7f-42db-8cbe-f5b69bd2aa06.json | 127 + ...-f157d325-29b7-4f9f-bdb5-7e0eba3fcb5c.json | 172 + ...-f0c7f0bf-41b6-4568-9911-e2d805265711.json | 174 + ...-25d5bdb7-8d18-498d-a97d-d95a6fb8c9a8.json | 119 + ...-1f6f9435-92ad-4363-9f0c-1e54059c5dc4.json | 209 + ...-83d29a38-d185-4da1-bf7c-796c32549172.json | 187 + ...-a886f310-136b-4d5e-b32b-512a0240982f.json | 181 + ...-4d28fe91-5746-4c39-a8f0-ed56ca160a14.json | 128 + ...-b20b34f9-5e1b-4d0f-8572-f21362b0e345.json | 173 + ...-be76a133-7392-4cf1-904a-fb9e7463d9ff.json | 221 + ...-78189ca7-7948-4439-966b-4447023b9d74.json | 199 + ...-6e98b3d8-7a3c-44ab-886c-20808a9bbc0a.json | 145 + ...-cfe80931-2a26-43cf-ac19-9333113edb1b.json | 260 + ...-dca8d182-bcd4-4450-b3b8-ab15f9ec2b20.json | 232 + ...-0934697b-6b99-4564-bc59-fcfff205e7a8.json | 199 + ...-6fd137e0-c5b3-46bf-b7cc-1b9ada70f8cb.json | 244 + ...-86cd1183-238f-46f1-89fb-e31c381aa9cd.json | 224 + ...-dac7fc11-4da0-43b6-a704-b5d5e0f01355.json | 289 + ...-bdb9aaa4-0806-4b34-a670-488774d109df.json | 194 + ...-df75f9a7-1493-4f85-933b-41e16a40a9aa.json | 277 + ...-9a69c5d6-6e9c-4112-b48d-c967ce827264.json | 267 + ...-aa14cc9b-89e7-4ad3-bd27-cebd20d762fd.json | 255 + ...-913a5283-6ee7-4539-b536-25e88067c71c.json | 302 + ...-aa3d9573-1529-4050-b0e3-d3a2c82060ad.json | 275 + ...-4f7eeec0-56e3-48d7-b30c-79fd53ad3971.json | 314 + ...-8d816111-c114-4b60-9a27-9562e7740699.json | 327 + ...-642c65dc-71fa-4e6a-a148-f2dc8dbd48fd.json | 449 + ...-078046e8-41b1-4d52-9ec7-cba3101036d7.json | 401 + ...-e006588c-7192-4449-bd09-0abc99a17369.json | 385 + ...-22ecd0b6-4fd9-4521-9067-46171675f011.json | 718 + ...-a3361f1b-c64e-4877-b104-9e005664b987.json | 490 + ...-336e2810-dd51-4d25-9729-a91266346caf.json | 394 + ...-1be16f79-52f8-40fb-91c4-ea3d3e097ca0.json | 485 + ...-3017e126-f28b-4de3-a2d0-55924f78cb18.json | 865 + ...-1075c611-326d-47eb-b752-8450c62dbeff.json | 1226 + ...-d5281764-a7b2-4459-a57a-1d3573814c84.json | 1623 + ...-b6d2204e-b85e-4a35-937c-c1bc3c2af34d.json | 2161 + .../fuzz/corpus/coverage_report.html | 197588 +++++++++++++++ ...-32dff114-6a03-4430-9d95-836289099cbe.json | 23 + ...-d4125812-54d1-4fe8-b2da-34d5e34dc9fa.json | 23 + ...-0a807f4b-d878-4428-b5b9-a9f85a8454cb.json | 23 + ...-1ef75ec6-dacf-4714-ac4e-b14b0e6db321.json | 23 + ...-ab38a60b-d225-4ae7-b02b-7b0e34fbc487.json | 23 + ...-a56168a4-d5f3-41bd-a2e4-952218f3cb5d.json | 23 + ...-31a6e666-e7fb-4748-8532-81b12c1dcc7d.json | 23 + ...-d3a81c39-8004-4bff-b6fc-5ebcc72e5663.json | 23 + ...-600969d3-9967-402d-a424-4aa6f788b3cc.json | 23 + test/invariants/helpers/Utils.t.sol | 19 + .../{PropertyA.t.sol => PropertyEbo.t.sol} | 2 +- .../properties/PropertyParent.t.sol | 5 +- .../properties/PropertySanityCheck.t.sol | 99 + 85 files changed, 223988 insertions(+), 4 deletions(-) create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803570201000-9d2d56aa-59cf-4190-ad90-113fcac7c07b.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803572719000-1740f705-594e-4ba4-86b9-a7397841852a.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803582478000-f241289c-0658-4e22-beca-b8ee18fa1c5e.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803585801000-1f6e1bdd-fc3f-4a44-b6a7-36b505a2bc08.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593014000-cb45345a-eb47-4796-90de-54189aa91906.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593410000-ade8ba36-35c6-4c26-a794-1358fc248c91.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593538000-d3487e2f-b5c3-4ba6-a4ad-bd45f3059e7b.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803599728000-87a8141e-a121-46dc-a00f-776de71bb0b1.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605108000-73ba1036-f664-420c-8d38-fc474d664848.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605587000-7b0538fd-d4b9-43b3-92c7-691cc391e386.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803606635000-d68a6881-2741-489a-b7bd-a28264c8897a.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803607978000-d99cfb6e-8259-4051-98fc-484c2b1166c0.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803608778000-cba6387c-87fd-4774-b883-b02dc21edbe1.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803609589000-741509d7-8c95-4626-b5c3-c17625f529b5.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803612336000-5693c2ca-1af1-4296-b5e4-039401f77778.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803616547000-7e10b2dd-f253-4d1d-b859-ec8a710b55b8.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803617615000-2901a619-fff5-448f-99fe-6220b810c578.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803620612000-8cf92baa-a0a3-4010-9457-96b2f6261d69.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/immutable/1731277803621764000-125ef6cd-6d4b-4800-ad62-0f4317b13564.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803567787000-ab0f8e03-6145-4021-98bc-bc4414e1edac.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569568000-2b517ff1-9d51-4eb3-9295-59aef5edfe82.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569770000-871a08c3-b8b7-48ec-b0f3-8f40a4b63667.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570237000-58712d84-87f6-4a52-b17f-0a1efd24dc9a.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570989000-b61b8318-0b73-4814-96b9-ffd4a7bf2c0a.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803571997000-b4c04c00-0029-44d8-a7a6-df5aa8196990.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803572903000-2dfcb57a-f822-4ba8-935c-c6ef623952cf.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573530000-e8877634-86e5-4563-9155-7f538767b281.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573604000-9ce76d8d-3fdf-4be0-a718-67783ed4f0bd.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573691000-2f49b3b2-64e5-483d-8360-df43563d2ae4.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803574933000-69edad03-8dfd-4c82-a029-e43ba88f8c78.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575378000-7c923095-534b-4a11-b54e-2d2ef4e1b46b.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575499000-b159dfaa-e3ec-46e5-98f1-23e5b2c960d2.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575632000-cdb80630-09f6-4557-a579-1f22c6aad840.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576501000-457a1374-bc7f-42db-8cbe-f5b69bd2aa06.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576958000-f157d325-29b7-4f9f-bdb5-7e0eba3fcb5c.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577371000-f0c7f0bf-41b6-4568-9911-e2d805265711.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577541000-25d5bdb7-8d18-498d-a97d-d95a6fb8c9a8.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577723000-1f6f9435-92ad-4363-9f0c-1e54059c5dc4.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577914000-83d29a38-d185-4da1-bf7c-796c32549172.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803579664000-a886f310-136b-4d5e-b32b-512a0240982f.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580224000-4d28fe91-5746-4c39-a8f0-ed56ca160a14.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580455000-b20b34f9-5e1b-4d0f-8572-f21362b0e345.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581400000-be76a133-7392-4cf1-904a-fb9e7463d9ff.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581661000-78189ca7-7948-4439-966b-4447023b9d74.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582447000-6e98b3d8-7a3c-44ab-886c-20808a9bbc0a.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582764000-cfe80931-2a26-43cf-ac19-9333113edb1b.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803583775000-dca8d182-bcd4-4450-b3b8-ab15f9ec2b20.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584460000-0934697b-6b99-4564-bc59-fcfff205e7a8.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584811000-6fd137e0-c5b3-46bf-b7cc-1b9ada70f8cb.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803585754000-86cd1183-238f-46f1-89fb-e31c381aa9cd.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803586882000-dac7fc11-4da0-43b6-a704-b5d5e0f01355.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587294000-bdb9aaa4-0806-4b34-a670-488774d109df.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587717000-df75f9a7-1493-4f85-933b-41e16a40a9aa.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803588141000-9a69c5d6-6e9c-4112-b48d-c967ce827264.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590022000-aa14cc9b-89e7-4ad3-bd27-cebd20d762fd.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590829000-913a5283-6ee7-4539-b536-25e88067c71c.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803591721000-aa3d9573-1529-4050-b0e3-d3a2c82060ad.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803592555000-4f7eeec0-56e3-48d7-b30c-79fd53ad3971.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803595622000-8d816111-c114-4b60-9a27-9562e7740699.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803597300000-642c65dc-71fa-4e6a-a148-f2dc8dbd48fd.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803598316000-078046e8-41b1-4d52-9ec7-cba3101036d7.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803599309000-e006588c-7192-4449-bd09-0abc99a17369.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803600377000-22ecd0b6-4fd9-4521-9067-46171675f011.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601066000-a3361f1b-c64e-4877-b104-9e005664b987.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601793000-336e2810-dd51-4d25-9729-a91266346caf.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803602532000-1be16f79-52f8-40fb-91c4-ea3d3e097ca0.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803615385000-3017e126-f28b-4de3-a2d0-55924f78cb18.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803619106000-1075c611-326d-47eb-b752-8450c62dbeff.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803628684000-d5281764-a7b2-4459-a57a-1d3573814c84.json create mode 100755 test/invariants/fuzz/corpus/call_sequences/mutable/1731277803638838000-b6d2204e-b85e-4a35-937c-c1bc3c2af34d.json create mode 100644 test/invariants/fuzz/corpus/coverage_report.html create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916310343000-32dff114-6a03-4430-9d95-836289099cbe.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916315548000-d4125812-54d1-4fe8-b2da-34d5e34dc9fa.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916315901000-0a807f4b-d878-4428-b5b9-a9f85a8454cb.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916316125000-1ef75ec6-dacf-4714-ac4e-b14b0e6db321.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916317250000-ab38a60b-d225-4ae7-b02b-7b0e34fbc487.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916317637000-a56168a4-d5f3-41bd-a2e4-952218f3cb5d.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916318080000-31a6e666-e7fb-4748-8532-81b12c1dcc7d.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916318104000-d3a81c39-8004-4bff-b6fc-5ebcc72e5663.json create mode 100755 test/invariants/fuzz/corpus/test_results/1731277916318142000-600969d3-9967-402d-a424-4aa6f788b3cc.json rename test/invariants/properties/{PropertyA.t.sol => PropertyEbo.t.sol} (81%) create mode 100644 test/invariants/properties/PropertySanityCheck.t.sol diff --git a/test/invariants/FuzzTest.t.sol b/test/invariants/FuzzTest.t.sol index c1fe413..ce7a9b5 100644 --- a/test/invariants/FuzzTest.t.sol +++ b/test/invariants/FuzzTest.t.sol @@ -5,6 +5,6 @@ import {PropertyParent} from './properties/PropertyParent.t.sol'; contract FuzzTest is PropertyParent { function test_debug() public { - assert(true); + this.property_sanityCheck(); } } diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803570201000-9d2d56aa-59cf-4190-ad90-113fcac7c07b.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803570201000-9d2d56aa-59cf-4190-ad90-113fcac7c07b.json new file mode 100755 index 0000000..51c460e --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803570201000-9d2d56aa-59cf-4190-ad90-113fcac7c07b.json @@ -0,0 +1,25 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c171570000000000000000000000000647a2b37d508178e906383325307f78da653649", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "35851470801474844628522781619661439362520135241" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17285, + "blockTimestampDelay": 259199 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803572719000-1740f705-594e-4ba4-86b9-a7397841852a.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803572719000-1740f705-594e-4ba4-86b9-a7397841852a.json new file mode 100755 index 0000000..07ffa02 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803572719000-1740f705-594e-4ba4-86b9-a7397841852a.json @@ -0,0 +1,101 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106bca412bb66f5a786f1f157a7fc9a7a410fdc25af263685a02f7fba0f220b6917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "85324707736064915141600617856415742369037048538489516430413284888496340429079", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xbf938c53", + "dataAbiValues": { + "methodSignature": "property_sanityCheck()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15835, + "blockTimestampDelay": 490250 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803582478000-f241289c-0658-4e22-beca-b8ee18fa1c5e.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803582478000-f241289c-0658-4e22-beca-b8ee18fa1c5e.json new file mode 100755 index 0000000..6283a3c --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803582478000-f241289c-0658-4e22-beca-b8ee18fa1c5e.json @@ -0,0 +1,205 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8000000000000000000000000000000000000000000000853a0d2313c00000000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "39321600000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23050, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfb0e3106162bbf50b7b4f4127a44fc6dee30686640d85ab8a97c7a387e688d09200000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "80008248687813878652618995284154503941697939794158322754224777983398987223186", + "86400", + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17066, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cce21db24dd246f08ad02e64e7a8e8742fa9607e8fdf81425d16e85c70f3de5d85907be10f550a4ab3f84480cf0ea723b2a74da20322f8a7c02918a70cdb15ac9", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "93236265237587594263022487768855356786420509345912517467786824227481808922072", + "40269523242363880299786798295795090179015741572111778996238876869560403843785" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 101426 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803585801000-1f6e1bdd-fc3f-4a44-b6a7-36b505a2bc08.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803585801000-1f6e1bdd-fc3f-4a44-b6a7-36b505a2bc08.json new file mode 100755 index 0000000..4cdce6a --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803585801000-1f6e1bdd-fc3f-4a44-b6a7-36b505a2bc08.json @@ -0,0 +1,222 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6faba969b1150e65eb039223322d37083c0f930e9f96e767cfaf888c1440b89042a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffbe15000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "76627612529152310655938988775485703136714009850335653768166292952282670580391", + "115792089237316195423570985008687907853269984665640564039457584007630014119936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 274647 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007c3160c01450d95568fbc7e3fe876965aa411c1bf13d7be2baabf28cedd3012f", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56174036476597730143689219709059961134239333858317208755745576773703517274415" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 404026 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c0000000000000000000000000000000000000000000000000000000000000120", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "288" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28898, + "blockTimestampDelay": 360593 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593014000-cb45345a-eb47-4796-90de-54189aa91906.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593014000-cb45345a-eb47-4796-90de-54189aa91906.json new file mode 100755 index 0000000..0266883 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593014000-cb45345a-eb47-4796-90de-54189aa91906.json @@ -0,0 +1,297 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574403" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43748, + "blockTimestampDelay": 541010 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f790139ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 11833, + "blockTimestampDelay": 213928 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d7f4bab9c72ef04decea93d5f106890883b64be0e4f50aa1ceebd5a435a7fa13a0000000000000000000000001302f0402bb094e65a1c38fc8979628fa7cb7eb80000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000d2f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "57577429716414119383889913852992200380066446236494108346454295294682507223354", + { + "accountingExtension": "0x1302F0402bb094e65a1c38fC8979628FA7cb7eB8", + "bondSize": "864000", + "bondToken": "0x0000000000000000000000000000000000093A80", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639935" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30759, + "blockTimestampDelay": 56734 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593410000-ade8ba36-35c6-4c26-a794-1358fc248c91.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593410000-ade8ba36-35c6-4c26-a794-1358fc248c91.json new file mode 100755 index 0000000..8b166a9 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593410000-ade8ba36-35c6-4c26-a794-1358fc248c91.json @@ -0,0 +1,336 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e57cf479b021a816743ff5b53a6f3e5c2c247b2adb9311a44237c3858abd44df0e0000000000000000000000000000000000000000000000000000000000127118", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "56518743767933985910260346386765678340564227438862784222762849925209918856974", + "1208600" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35385, + "blockTimestampDelay": 50692 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007861590032384" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 57134 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b6811b3175568497fde3c31fe069ccc7985311b0506f3b43e70969ab59ea722d2599", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "12299832254764069471447641000592064088020729744720327828938364394997925356953" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098ea6e532d597161bf414844541b5281607abc0fedcfbe19700823ca81bfeffd5da", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "75488891688353701349182521546099519030572206284453220585196006136091846366682" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13249, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff000000000000000000000000000000000000000000000000000000000009688043d2cc6bee2c75afbb0a2d8e686ed8d850d35e4220dab9eaaad8c1f2bbd315eb000040ba1702262dc3924484fe5b466a7207d688c9429f8aaeb64c1acd0d86e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "616576", + "30677409604733962472433633135176719636373390531562919397962760076773674915307", + "446728739341497667529209047101419397582060126024847855090499938302133985", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28736, + "blockTimestampDelay": 576650 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14857, + "blockTimestampDelay": 578411 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593538000-d3487e2f-b5c3-4ba6-a4ad-bd45f3059e7b.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593538000-d3487e2f-b5c3-4ba6-a4ad-bd45f3059e7b.json new file mode 100755 index 0000000..9d2093f --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803593538000-d3487e2f-b5c3-4ba6-a4ad-bd45f3059e7b.json @@ -0,0 +1,457 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6faba969b1150e65eb039223322d37083c0f930e9f96e767cfaf888c1440b89042a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffbe15000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "76627612529152310655938988775485703136714009850335653768166292952282670580391", + "115792089237316195423570985008687907853269984665640564039457584007630014119936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 274647 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007c3160c01450d95568fbc7e3fe876965aa411c1bf13d7be2baabf28cedd3012f", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56174036476597730143689219709059961134239333858317208755745576773703517274415" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 404026 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c0000000000000000000000000000000000000000000000000000000000000120", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "288" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28898, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e0000000000000000000000000000000000000000000000000000000000000100", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "256" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 10120, + "blockTimestampDelay": 442746 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f77477db96404997c322ba9a11ba66d9f58fa471415b5c82afcf1965a16b52aa310000000000000000000000000000000000000000000000000000000000060000a3d04e821fd24d173d46c5c6591bac6f9d3ee4250e38f6752d158a2114dae86a7312ea15e2dc75c19cc06e815ad4c43b0e39987ce5ac5a5bac39cbb127f734e6", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "52680060769579736990081276342150508425883578818293859365287572298297987213873", + "393216", + "74095040352905635550053635482030730013005988265241047193937642446333545212010", + "52049396432936944477776417116733628414171704893437425841548460736384299644134" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 360369 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fb7ab9b804f5e3b07b64589457afe860d64ca8a1102a99dc3b01e9042b84b54c8", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "83076455368730213982012688072579720945989878255995701383969604691644153287880" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3912, + "blockTimestampDelay": 284189 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b820000000000000000000000000000000000000000000000000000000000000000ce675a74f87f83662332b39024ab66f66d3ad8159fb92d1081e73d8747ac44a2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000f99ab80a56afb5cf2d406681086184fa568b2c59b23b9eed0fb97babbdd70dcb987572aba5f9d1eb2bdfd7db4a60daa53ab31e663abe9ea14abc72f369d5dae3d49d00025d7681398c1ac8e5b18d32589a9d3aee941f68217de08b573fb0ef22270657897cfb0e6dff27bde358d9cd33988862a59eafeb150f97e1fb0bd5db1eb09668549dc88efb456b69b806d30443b7484266af42ae24fadce2ada2bf2e00ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed300000000000000000000000000000000000000000000000000000000000100006558973ea0cf6ef065af511cdd91dcf8ebf51e410d0e710b8482f875357b01e5a82a9a69bb78fc7065db036b90eebef2590e8a9797d50a66dfb4ab86433720e10000000000000000000000000000000000000000000000000000000000002700fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000010000688ad2bfdd1982f027350b11d5a66e4eb674020afc643610b6411864c705684cbaab39a71efe2422fd2229cf398d057b9b06ccfbe74bc3a4994ba9deed6f93052af9415df05e3b4e4bb3efd2328b1fac61e86adbbb1f32d9fe4d9fa96ef608ab9d48454c637331b80fc8bdfe0b16c68d224ae00eca2bc8b6b5b82eeb5dbb05bdffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3aaa89e9ec9968c5d9717eac26037a4e7abb9cc9d43af24edb06275ca7126a4c8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d0f6000000000000000000000000000000000000000000000000000000000009000056db5811b60eafc5a06420c40941879ca1aae8ba576dbb8f9dd9cbe1e4e187fb14c4c80ff0fa9624d2a9e63be6e238aa088864d7cd2780d36bc6dee000c42d1b000000000000000000000000000000000000000000000000000000000003f48058825231460c027d950a84d667bec6ad5f4731e0cfaef9f9b65d7008ad39ff50fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000000000000000000000000000000000000000000000000000000000000029f87ffe759d510e1c1d646f2c46946d2e09cce6ece48d285eecbab28b6da0aaafbe4233335f0868c51a18ff4b577aba2300ff0e1110fe6ebcf65aab5b22a0cd7af45a3243de6773b2ac820589df08ee53500a017476ffbb1bc4ceb09189a3a8688430464e8052902c1bf8131a3b65b1b8579578c0674f6b54e6508ebe3e773f92f62a3923b7d048bd00e06c64c9764f411dd42925c5a3bc087d2acf2dd45670afee5922c58e2ab2a48008017cf695319fc8f68540c785800cac4fb40071265bc6c57dd1da3996638b1d193cb3f0de7290b528e8c2553b44fdb00bd2f7afeb507f780ecfa7e55b67e34060e5a3ab3fc7c2fd6270fb027a69d0e3430e553adf6819c8dbcc8fe9ee062b2c79b12ff5516725f8025598c75085e7022536add4c3462e067f6eb57330f4a2635836735eb4e0053c2a02ad8f30b1ebb63d99a2cd2153db645c350fe8e5c04c29094fa388abef6a8faa96395cb0ff0901d9a9031f7631b22558fb38048fa6c225997c825a3070205c6bcc28d8335499c58531230e56b3a4aec270fc970dd1c77c0c5296114545b189f9c61f42ccea793f3b2f3b6c3b46fd6fb449fc87916235c006bf56db0c5c21f31410623781ece548911499cc23d8ac091676bc100d89c7174c55fa0bd83529b7e4cd0d2fb4476413f61972f0f860f6c403befbb5f69d0e304161de4e70ca3042a1d04835a72006a53c3175c5109baf4182d0da9a3e83b98e43af1ad858e630be26febe27f2c8a4f67eec52f53b0d005a92a11a1dd559351c3b253a1d1a70c23193b67441c058e70e67ac3f8ac4aee50ed009392925b73b400df2177c6a10fe1f591984b99794e9156c3bd0b4a2ed7517c12532c97966b24ef7deb1cf9e6cf37ab8f578cfd25cc9f82f16474fe7e1bde4298cc60088e914f35d7d5a66ef30363aca7be4e251f53e2f64b81e00b44a4f3ed31e5f1f4a517d25b06946975a9d79df88cf56c616ae4c81922660d533aa9317d842f948b3d2a5cab98f377cd1b719e1be52bfb774c70bd5ed589e3a4bff539f55e90e58abc8536ecc396cd34b566e938f0f4864fe1d6ff24fb8e3e3ab1b4c42b42c06700cd46a831b567bbdea115be603b7703579c8280ed0e5d4f20a9e510271e5bb61a194d5b0b205124c05d8991782e8e73158b0fd60717823b82eb7b4dd90cf778f8607913cad2914c4dfe829100903d1830199c1fbf569d6e37e2adb5d073c66fd3991eb8187063de6745dcedadabd41f6a70c7b2bc8e61d100de94b032f6d262a2e7a314c8a07740f33d9c56d018c1e78418ac315f32e91eed3eacbcded8e609c83aef09642cbfb3b717abe19c73fd5e49e008e320b3ee4ccaed6c353284dc811b9981746d05d363d35325d6f5e61340a544bf9b32b7b6cec1644b91e0b92085ff64c8d92b30f5ad1033570b6077b8bc2bb7a44a70045644d7bccb31cd1d59dc43541430d346d2a743381036d2f2e2a7a59e07c0c65de024350786615d3e7aa2c597a5d7e035e9d109e65d7d4badc94bc4bd2e55e3bc724b748e74a0fcacb73a2a9ee52f36347a5ae6072f300d6fd2f62bf08605016a6931767f353ac73babce9625b51569ab81df833bee00d3ff2bbb3badef2878a170d7d7109f33ab0f46bc96f4fc89ca727c7d8bc4282604b5bf3bbf0eea2bab4f7798601d86277e09f88645c1d56a4cae35b59d720e8b57f7e4abc5ea43a53526265c5cc4dedc5b72f127134d3d97a31a652f905f82ee74953598bf2a05f52dd89152ca9400523884d909d0469c6a966a2d841f4f01b74e98660ea5a28534174638ba83bf16343fcc653aaed6743963ad798004516fca1ba790701142e7b44788e2b9a4c6744", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "0", + "93359056366519978384575301215212766084552195127475241400321367131381031519394", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "112899263945265618091091185689767054075036928377626216345331905228274830609867", + "68959065517949274316588826283101587750558165013430347817640346533866916666083", + "96167718952585367175045237006581483249627268288674080939511722496406722768674", + "17651406335742926396690394648438989354403684618877496125906122976087978138398", + "79872808473243763044716704952744950461935635665535412421360192734135943376384", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "65536", + "45840124100760761585173752354748948632868900822901326367871013022630665716197", + "76063831858184420518861268628451249077285698597102935859033978034718219116769", + "9984", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "65536", + "47285815686966272144121693505188799597744533049049783177959832040536684193868", + "84432718589681428792934245815119003114976466487051385221334973405702499832581", + "19437535705728302099767088929537200823274258212636994203273729259332963797163", + "71140808496164046925239908329887697304458696034799907436633500076327881606589", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "77191109322862123514795600886680155988643876662484090273820952307332291142856", + "115792089237316195423570985008687907853269984665640564039457584007913128775926", + "589824", + "39286452316517865283766389032392547299789935223147165990478078739011264940027", + "9393939775408484523215953034946785494006122941999182174070733730995117501723", + "259200", + "40033788065363256588949523368348146912228695325379481069044606228254426791760", + "115792089237316195423570985008687907853269984665640564039457584007913129639930" + ], + [ + "f87ffe759d510e1c1d646f2c46946d2e09cce6ece48d285eecbab28b6da0aaaf", + "be4233335f0868c51a18ff4b577aba2300ff0e1110fe6ebcf65aab5b22a0cd7a", + "f45a3243de6773b2ac820589df08ee53500a017476ffbb1bc4ceb09189a3a868", + "8430464e8052902c1bf8131a3b65b1b8579578c0674f6b54e6508ebe3e773f92", + "f62a3923b7d048bd00e06c64c9764f411dd42925c5a3bc087d2acf2dd45670af", + "ee5922c58e2ab2a48008017cf695319fc8f68540c785800cac4fb40071265bc6", + "c57dd1da3996638b1d193cb3f0de7290b528e8c2553b44fdb00bd2f7afeb507f", + "780ecfa7e55b67e34060e5a3ab3fc7c2fd6270fb027a69d0e3430e553adf6819", + "c8dbcc8fe9ee062b2c79b12ff5516725f8025598c75085e7022536add4c3462e", + "067f6eb57330f4a2635836735eb4e0053c2a02ad8f30b1ebb63d99a2cd2153db", + "645c350fe8e5c04c29094fa388abef6a8faa96395cb0ff0901d9a9031f7631b2", + "2558fb38048fa6c225997c825a3070205c6bcc28d8335499c58531230e56b3a4", + "aec270fc970dd1c77c0c5296114545b189f9c61f42ccea793f3b2f3b6c3b46fd", + "6fb449fc87916235c006bf56db0c5c21f31410623781ece548911499cc23d8ac", + "091676bc100d89c7174c55fa0bd83529b7e4cd0d2fb4476413f61972f0f860f6", + "c403befbb5f69d0e304161de4e70ca3042a1d04835a72006a53c3175c5109baf", + "4182d0da9a3e83b98e43af1ad858e630be26febe27f2c8a4f67eec52f53b0d00", + "5a92a11a1dd559351c3b253a1d1a70c23193b67441c058e70e67ac3f8ac4aee5", + "0ed009392925b73b400df2177c6a10fe1f591984b99794e9156c3bd0b4a2ed75", + "17c12532c97966b24ef7deb1cf9e6cf37ab8f578cfd25cc9f82f16474fe7e1bd", + "e4298cc60088e914f35d7d5a66ef30363aca7be4e251f53e2f64b81e00b44a4f", + "3ed31e5f1f4a517d25b06946975a9d79df88cf56c616ae4c81922660d533aa93", + "17d842f948b3d2a5cab98f377cd1b719e1be52bfb774c70bd5ed589e3a4bff53", + "9f55e90e58abc8536ecc396cd34b566e938f0f4864fe1d6ff24fb8e3e3ab1b4c", + "42b42c06700cd46a831b567bbdea115be603b7703579c8280ed0e5d4f20a9e51", + "0271e5bb61a194d5b0b205124c05d8991782e8e73158b0fd60717823b82eb7b4", + "dd90cf778f8607913cad2914c4dfe829100903d1830199c1fbf569d6e37e2adb", + "5d073c66fd3991eb8187063de6745dcedadabd41f6a70c7b2bc8e61d100de94b", + "032f6d262a2e7a314c8a07740f33d9c56d018c1e78418ac315f32e91eed3eacb", + "cded8e609c83aef09642cbfb3b717abe19c73fd5e49e008e320b3ee4ccaed6c3", + "53284dc811b9981746d05d363d35325d6f5e61340a544bf9b32b7b6cec1644b9", + "1e0b92085ff64c8d92b30f5ad1033570b6077b8bc2bb7a44a70045644d7bccb3", + "1cd1d59dc43541430d346d2a743381036d2f2e2a7a59e07c0c65de0243507866", + "15d3e7aa2c597a5d7e035e9d109e65d7d4badc94bc4bd2e55e3bc724b748e74a", + "0fcacb73a2a9ee52f36347a5ae6072f300d6fd2f62bf08605016a6931767f353", + "ac73babce9625b51569ab81df833bee00d3ff2bbb3badef2878a170d7d7109f3", + "3ab0f46bc96f4fc89ca727c7d8bc4282604b5bf3bbf0eea2bab4f7798601d862", + "77e09f88645c1d56a4cae35b59d720e8b57f7e4abc5ea43a53526265c5cc4ded", + "c5b72f127134d3d97a31a652f905f82ee74953598bf2a05f52dd89152ca94005", + "23884d909d0469c6a966a2d841f4f01b74e98660ea5a28534174638ba83bf163", + "43fcc653aaed6743963ad798004516fca1ba790701142e7b44788e2b9a4c6744" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18813, + "blockTimestampDelay": 166386 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa21e47192f11d3f380576fd394ec9e1b4eb90a89bceb9b651bba78bf6ab564d9dfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4d00002c95da414ee489142bbc6e001fef7a12692a3b9d1210170c80e8d07cec96b7c5", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "15329948992898956970077422041464151575333773433396765238718102692294303305117", + "115792089237316195423570985008687907853269984665640564039457084007913129574400", + "20166531891724206848272694213144022190042376042953875838430089970096862050245" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7764, + "blockTimestampDelay": 145528 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15165, + "blockTimestampDelay": 79666 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94c9ca03", + "dataAbiValues": { + "methodSignature": "handleConfirmCouncil()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 12967 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803599728000-87a8141e-a121-46dc-a00f-776de71bb0b1.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803599728000-87a8141e-a121-46dc-a00f-776de71bb0b1.json new file mode 100755 index 0000000..3c59287 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803599728000-87a8141e-a121-46dc-a00f-776de71bb0b1.json @@ -0,0 +1,502 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c573a80b81e8d97661fbf779db19fd00793e39f3b40bca612ee408ab75ff1c6439cf047509736e50626b1084ee93f4294000f73db102927cdc7fc34de68c384da900e6c", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913130244736", + "83279546779206125286340055887058748934887896216240549764862301155730028032071", + "36452200662221151095065482565067302916782446267779931962683895890335455252076" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41956, + "blockTimestampDelay": 475112 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efaab191ad64d8fba3d052ab8ef37a088ba9faf5a1be696a47310de3441525ef897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3aaae444ec5312714f03b0566d2b40e5d34f58f068cabf3625fc0d7cfe3db912", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "77389853507359787864882669351213362161735184606551274462865365263877886900375", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "26536084675173092165947634556752584404681954305155475174391110206140234709266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18699, + "blockTimestampDelay": 240561 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcd2d78e343e1607b919341e2fe248544a49a0028fbd677a717f6a437862ddbc00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "95366551777850189910113500849756061153261920552639335948298155642211775921152" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16776, + "blockTimestampDelay": 165634 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087cd27e66c1a6365fdd2d452e5a6a582655000c0811d209ba0499f4483caf4b2da", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "92794631311208978202520326772644046682922248037671286389514014341863059010266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6256, + "blockTimestampDelay": 488143 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9128a1b5b9d7d3061f14bea63c8830170dadc5f154b01425336f91cc6d8611588ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "8385644986530251641334144830118419649455771804161689778824132977763480049032", + "115792089237316195423570985008687907853269984665640564039457584007913129639680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35699, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e30000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41252, + "blockTimestampDelay": 375602 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285caff44fb6a2363fac767b088aff222c3143f1ed041c9b3e47d6474ee4922e1979fec9d178675775c3aa5161a5a209a68597466d991483528cc71c8d6ac533d0955a137b7e6f635f28c37dc46d14755f62f1ce7b659dc1873b04e1744e54dc225b665dad307139d75a132cdb60e373e4b35bba44673f5ee3d0bfbf1ac491c3d0e75", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115461657188952309751477762153544746327107707569543270374831352475679717431199", + "107023389619990543669223297468939824753654796115418022982959364890624175966549", + "72920814456766912229072746410044959713398794893085675262607692768311068730806", + "46070226826296101107756227560930518318774961046515756120293728876851585945205" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 39447, + "blockTimestampDelay": 175903 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d37645351a8f36eba3b366024eafac86b09ad5a52e0d3cf42eb52112344ab3206000000000000000000000000d12fb9f7a711eb0caf6aac68aeaf04277804b39e000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003200000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00000b2104824bc90dc4bcf1e407a769278e1c443fdba6cf324b44962e4fea636424", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "25054466425052560783839884851311066245042877293899029878022208182382616064518", + { + "accountingExtension": "0xd12fb9f7A711Eb0caF6aaC68AEaF04277804B39e", + "bondSize": "52428800", + "bondToken": "0x000000000000000000000000000000000000000A", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "disputeWindow": "5033778407313201451107747851099848118306043382601391308246767880599192691748" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26656, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e74f8b00", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457284007913128430336" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 56799, + "blockTimestampDelay": 262144 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b804000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f0087104a1ac49782a4e16877da31b055635722ebf513f4c9d4971ee8ba22ecc4a6eec651143a3c6f38d013752a6418c6f09e02c569047e21b1821746f674b34b1c0000000000000000000000000000000000000000000000000000000000000036fa4a08dc093aad94a53150a69958ea5701d0cdfc0457647f4a00851f2b3ffa4ffd8a6288227c780955edaf8b4dede4dd79b2d6a1b9670dc32f84033dbf8be3094a3581399d5766a955990785635f7387f42bc3ac7aefc687d70bedd0207993bc4c485bed03b3790844630b99699bb40f5069c1d8403298cdfda2575a3317f64ae11593ffb0ec0927fe5913230c741395327603a0cb862e6b83dfda2f6220ae47cc515c273c51f6f72596a67c49bd9c8c601629067e48532c86a5ec436da6c5d4a086dd03f412f823cb3b33845d313ed20d3eb30a8c1738fe538f8ce08dda6bc903393b682ce82af7ad546cbd6f5e6b633403a16c9539778326f27093154073c189ff0c2a9bf1d9e0c1340059cb502459adc6848943173465070dbc70f56c9773a380843bf072ee4ebcdaa6db9c9b1bcdd7accd8376418847fe049b50be079824e34e17ba796d22717b906c8ae168c515652b146e98f67ff81a17d32cfbb3a45d70b80d8aebc1f699d448d6bb373046a46055cea8663f1e133e3b318bd3bbf341831782f5c84d3a2e123ae7cf9de566a9e5958314dac1f2f943af76cc5a4ed5d61bb435d28f2bc87a2c6a8b92b314537495d986c635f3f24b0c89bb8431fd15da1f20ecad2204c5f2c899891deee290ce478f20d080be1f01b0631cfde6d77c174a0451dff325ceca911fe96cc8e506f589259f7ae6d81a6562ad17da5ac2668afb4dfae5387e68f8f182b4cd18e2d04b3d23801beadb0e540b89182a8ef12544bf301a4ed791f0937f2169890e091a55113e6f5869333627389cfa9013231650d5b1193bc5c6faf12c4caedc4c1de1a155f1caac4b1b386f2c9fb59c0edddb79370ea902ef6cdf5724565bfb35d2d999e5b8ae7d2997c94e3ce7b6bfc8698850f5bea6ed28d2670ed0bc72485811f4579eee682784c336392515b9f38b305760c5f2a08ab4ab5c4e4dc94bfd7fe5a3c37df0d10561d5eee3109a165aa8d09aee107d8bc0847badc5833e23b36da204e51497d3f1716162337b2ca72a6d9b0df65af932d7fe5768c3a7a91282332e7768f46e57727280521bd0e3c9f183fa04f1c0e3d82bf7ea3b756ba92372a93cb61e730e2e59814916b3e92ea0d14277077195c6e7500b9f864c7baa380be57ffd71a995ea5594800861a797da989e5e145ccb01db898f989f4c6fde7d34bf056442d3839d229d6e8c8fd581525acabfa32dfd933d425b58fea110c87b5d18bd00fffbffa00d873198e501a825357e75a85912832c0f7dc92f5825797c2460c978f3e875aea0a979c0a4060871bbd79a9babf07212d556a72bb84496ad42f34884efeed068bfad56613cf714bca57b67944ed964fa024cbdc39fe0848bdeb5c884858a5ac18070bc1e4c0329f2d89fcaadcfdab6ef8a1532af54954a15ea5e23ce45325d9f98f0e3fb86d60b7a0397d2453942930b89e474cdda078d4d62f83b306800b744f407abb12457ab2002a4c1babaebbacd167f44ae7a2bcba0576b2bba82a9e92a2177c482c7e3607c94e731f1a05d19d027153f2b2e5e5fa02b5887eadf045f884b7410bc1af1eb756ae71476a0623a5c27fbd454617541c911c1ca7f76e1017369953940959affc0126bd3ec9ee985c1ac0733a0d152dc33ad991a56c05ed402b56772c434095bf2c563875bd1ef4f339a0116feea24de95ead8342f2cc38eb2eb85b85c3ecbb25e77ae77cbbeb5b4bbc22e5b5bae35469b6565c089be978e383bca0d9ea2bdf66b2c2022976a424700038eb0dd496185b4406b017eb667af2336bd343a6518cdb282ed1f4ad156a51a420357c104c259ffefcc61717fc2d33bbac669fd340b62448e7b1ff79817d2faacc25d75413c7765d42904380717b7dfba97b043ecf6e68448d74c814a84fcec4b8e91924a2d84756257a3f7b5be9993390cb0d83ea216c344cd01747e580a018abe2b78ff31d78a0376939df219b6e4348501b5cd4005a711a4cf2585665816a7e23ad88e6fce9816231f577a8a4cc99f0fb7042243727ff97dfb91a943382ca90c2df1ad395083a12f7234582ea05fb002ebe876e39b32b192b8ada3a742f234ac609ba886fe26fc693ae013386f1b8b4d4b3c0fca228fbbd7af483f28f0a6a1363b275abecc85f2bee9d3c5c82a69692d9e81a977c050c94a09db9ac1ec9c86f3a6e0085d60e0d08cd2f8711d90b4066d0b5dfa922675d11a734712b53ba0ccab9ab7a8fe313144d531d11397926ca47601f444c6e995d8c7bfe71bac0249f67ef196e0656ff7e065d21224aea23f74592d0df86b3869e0a08de6c436ae57b76cc6821c11d16b120219ecb3e66724bb9b913be1da889b5d3900926e267b2beaeca176baaa9f8c82b8d74a308a307751320c46e850a5eaea83c5acccf639b783f5606cebaf54d8c04499037c3ab777163747416a6910cb0352002b67", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "2", + "864000", + "61091015562669229328302511622207838274133483677802899134756790701318101320870", + "108000853268429518120666974822971079545728317287326968663692222929051051051804" + ], + [ + "fa4a08dc093aad94a53150a69958ea5701d0cdfc0457647f4a00851f2b3ffa4f", + "fd8a6288227c780955edaf8b4dede4dd79b2d6a1b9670dc32f84033dbf8be309", + "4a3581399d5766a955990785635f7387f42bc3ac7aefc687d70bedd0207993bc", + "4c485bed03b3790844630b99699bb40f5069c1d8403298cdfda2575a3317f64a", + "e11593ffb0ec0927fe5913230c741395327603a0cb862e6b83dfda2f6220ae47", + "cc515c273c51f6f72596a67c49bd9c8c601629067e48532c86a5ec436da6c5d4", + "a086dd03f412f823cb3b33845d313ed20d3eb30a8c1738fe538f8ce08dda6bc9", + "03393b682ce82af7ad546cbd6f5e6b633403a16c9539778326f27093154073c1", + "89ff0c2a9bf1d9e0c1340059cb502459adc6848943173465070dbc70f56c9773", + "a380843bf072ee4ebcdaa6db9c9b1bcdd7accd8376418847fe049b50be079824", + "e34e17ba796d22717b906c8ae168c515652b146e98f67ff81a17d32cfbb3a45d", + "70b80d8aebc1f699d448d6bb373046a46055cea8663f1e133e3b318bd3bbf341", + "831782f5c84d3a2e123ae7cf9de566a9e5958314dac1f2f943af76cc5a4ed5d6", + "1bb435d28f2bc87a2c6a8b92b314537495d986c635f3f24b0c89bb8431fd15da", + "1f20ecad2204c5f2c899891deee290ce478f20d080be1f01b0631cfde6d77c17", + "4a0451dff325ceca911fe96cc8e506f589259f7ae6d81a6562ad17da5ac2668a", + "fb4dfae5387e68f8f182b4cd18e2d04b3d23801beadb0e540b89182a8ef12544", + "bf301a4ed791f0937f2169890e091a55113e6f5869333627389cfa9013231650", + "d5b1193bc5c6faf12c4caedc4c1de1a155f1caac4b1b386f2c9fb59c0edddb79", + "370ea902ef6cdf5724565bfb35d2d999e5b8ae7d2997c94e3ce7b6bfc8698850", + "f5bea6ed28d2670ed0bc72485811f4579eee682784c336392515b9f38b305760", + "c5f2a08ab4ab5c4e4dc94bfd7fe5a3c37df0d10561d5eee3109a165aa8d09aee", + "107d8bc0847badc5833e23b36da204e51497d3f1716162337b2ca72a6d9b0df6", + "5af932d7fe5768c3a7a91282332e7768f46e57727280521bd0e3c9f183fa04f1", + "c0e3d82bf7ea3b756ba92372a93cb61e730e2e59814916b3e92ea0d142770771", + "95c6e7500b9f864c7baa380be57ffd71a995ea5594800861a797da989e5e145c", + "cb01db898f989f4c6fde7d34bf056442d3839d229d6e8c8fd581525acabfa32d", + "fd933d425b58fea110c87b5d18bd00fffbffa00d873198e501a825357e75a859", + "12832c0f7dc92f5825797c2460c978f3e875aea0a979c0a4060871bbd79a9bab", + "f07212d556a72bb84496ad42f34884efeed068bfad56613cf714bca57b67944e", + "d964fa024cbdc39fe0848bdeb5c884858a5ac18070bc1e4c0329f2d89fcaadcf", + "dab6ef8a1532af54954a15ea5e23ce45325d9f98f0e3fb86d60b7a0397d24539", + "42930b89e474cdda078d4d62f83b306800b744f407abb12457ab2002a4c1baba", + "ebbacd167f44ae7a2bcba0576b2bba82a9e92a2177c482c7e3607c94e731f1a0", + "5d19d027153f2b2e5e5fa02b5887eadf045f884b7410bc1af1eb756ae71476a0", + "623a5c27fbd454617541c911c1ca7f76e1017369953940959affc0126bd3ec9e", + "e985c1ac0733a0d152dc33ad991a56c05ed402b56772c434095bf2c563875bd1", + "ef4f339a0116feea24de95ead8342f2cc38eb2eb85b85c3ecbb25e77ae77cbbe", + "b5b4bbc22e5b5bae35469b6565c089be978e383bca0d9ea2bdf66b2c2022976a", + "424700038eb0dd496185b4406b017eb667af2336bd343a6518cdb282ed1f4ad1", + "56a51a420357c104c259ffefcc61717fc2d33bbac669fd340b62448e7b1ff798", + "17d2faacc25d75413c7765d42904380717b7dfba97b043ecf6e68448d74c814a", + "84fcec4b8e91924a2d84756257a3f7b5be9993390cb0d83ea216c344cd01747e", + "580a018abe2b78ff31d78a0376939df219b6e4348501b5cd4005a711a4cf2585", + "665816a7e23ad88e6fce9816231f577a8a4cc99f0fb7042243727ff97dfb91a9", + "43382ca90c2df1ad395083a12f7234582ea05fb002ebe876e39b32b192b8ada3", + "a742f234ac609ba886fe26fc693ae013386f1b8b4d4b3c0fca228fbbd7af483f", + "28f0a6a1363b275abecc85f2bee9d3c5c82a69692d9e81a977c050c94a09db9a", + "c1ec9c86f3a6e0085d60e0d08cd2f8711d90b4066d0b5dfa922675d11a734712", + "b53ba0ccab9ab7a8fe313144d531d11397926ca47601f444c6e995d8c7bfe71b", + "ac0249f67ef196e0656ff7e065d21224aea23f74592d0df86b3869e0a08de6c4", + "36ae57b76cc6821c11d16b120219ecb3e66724bb9b913be1da889b5d3900926e", + "267b2beaeca176baaa9f8c82b8d74a308a307751320c46e850a5eaea83c5accc", + "f639b783f5606cebaf54d8c04499037c3ab777163747416a6910cb0352002b67" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40713, + "blockTimestampDelay": 288890 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3bb1a2084cb159fd6a10d243726c06ecc2c061e64fa5637a4e1e36ecd536af41a", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "84628665144738400938347255498120459236162163404711567437113231227400449881114" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40461, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e35136d12e4fabb2fa40b59d097a7d5e4dc2581129e405d2d808b39933f643e93e", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "36734194190276940096273241257659402973542659853799331442674641708617136597310" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0a9473a1fb03242c6ca0cf72ce918a668d75a7aef4f15a0d33f1a7b490a38de2b", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904", + "76566718707773384903225614118535891165433973603151251259517762515743289171499" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 47596, + "blockTimestampDelay": 550258 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605108000-73ba1036-f664-420c-8d38-fc474d664848.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605108000-73ba1036-f664-420c-8d38-fc474d664848.json new file mode 100755 index 0000000..c3f2dc8 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605108000-73ba1036-f664-420c-8d38-fc474d664848.json @@ -0,0 +1,432 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e57cf479b021a816743ff5b53a6f3e5c2c247b2adb9311a44237c3858abd44df0e0000000000000000000000000000000000000000000000000000000000127118", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "56518743767933985910260346386765678340564227438862784222762849925209918856974", + "1208600" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35385, + "blockTimestampDelay": 50692 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007861590032384" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 57134 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b6811b3175568497fde3c31fe069ccc7985311b0506f3b43e70969ab59ea722d2599", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "12299832254764069471447641000592064088020729744720327828938364394997925356953" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098ea6e532d597161bf414844541b5281607abc0fedcfbe19700823ca81bfeffd5da", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "75488891688353701349182521546099519030572206284453220585196006136091846366682" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13249, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff000000000000000000000000000000000000000000000000000000000009688043d2cc6bee2c75afbb0a2d8e686ed8d850d35e4220dab9eaaad8c1f2bbd315eb000040ba1702262dc3924484fe5b466a7207d688c9429f8aaeb64c1acd0d86e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "616576", + "30677409604733962472433633135176719636373390531562919397962760076773674915307", + "446728739341497667529209047101419397582060126024847855090499938302133985", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28736, + "blockTimestampDelay": 576650 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14857, + "blockTimestampDelay": 578411 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000053817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "53817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c2700db944f945348b4c6cffca09ace97414e862af57bfe67d15e8f4ba3813ede4b3d688e69cd534e15f8ccc3765fd50e2ab30d2b740b3ff6d5865213182fe783c63b4bac2923dad06e124a6e05ae7aa5ae1b3e8edff0154acd1de94e5fe6e26732", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "387963111102058097323071002434237761651493831039740349958407635767455047243", + "27775818758715135462630212585325327395456425224261459780030383525521640620998", + "26820159805776502209708934821205059577225837408551437026198979884765463865138" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25200, + "blockTimestampDelay": 27983 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc1800001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648", + "220855883097298041197912187592864814478435487109452369765200775161577471" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50518, + "blockTimestampDelay": 458752 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f000000000000000000000000000000000000000000000000000000000005d100", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "381184" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23639, + "blockTimestampDelay": 195785 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605587000-7b0538fd-d4b9-43b3-92c7-691cc391e386.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605587000-7b0538fd-d4b9-43b3-92c7-691cc391e386.json new file mode 100755 index 0000000..0125ab6 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803605587000-7b0538fd-d4b9-43b3-92c7-691cc391e386.json @@ -0,0 +1,521 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8000000000000000000000000000000000000000000000853a0d2313c00000000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "39321600000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23050, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfb0e3106162bbf50b7b4f4127a44fc6dee30686640d85ab8a97c7a387e688d09200000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "80008248687813878652618995284154503941697939794158322754224777983398987223186", + "86400", + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17066, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cce21db24dd246f08ad02e64e7a8e8742fa9607e8fdf81425d16e85c70f3de5d85907be10f550a4ab3f84480cf0ea723b2a74da20322f8a7c02918a70cdb15ac9", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "93236265237587594263022487768855356786420509345912517467786824227481808922072", + "40269523242363880299786798295795090179015741572111778996238876869560403843785" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 101426 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f998e4550a0de435d19cec4771f09fda88c2b7664624260171a192d839c6e2a65", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "69455236510673350336024647478873143438234265695463592178397393693034284984933" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35869, + "blockTimestampDelay": 315170 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55790, + "blockTimestampDelay": 111616 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x55438465815bedc734908418031caab89516e183218d7f0edf8e3c493ab40a8fcacc98210000000000000000000000001260c0c92cc0a0b1b5b54cb0501ed367353befeb", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "58510781634585462798122964402259920591361435129587016659431711127985600632865", + { + "arbitrator": "0x1260c0c92cc0A0b1B5b54cb0501eD367353befeB" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25042, + "blockTimestampDelay": 70452 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25184, + "blockTimestampDelay": 168977 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6fabc80cc1410f822f39c5490f53cdc96dd08eb43974e7995e4657ae6b6bf548e7f2871b07795e307166d3b23beb0529cf4a4051c8b01210b5127b57c6be3cac11f1", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "90485105672505321392083992946066544751897224405196443707030040081777413384178", + "61109991013787236767457822530506378720905044490242359531817392410759292260849" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41797, + "blockTimestampDelay": 101425 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90000000000000000000000000000ca826f8feadcf20b2c0d50019199cea2b62c4cc700000000000000000000000075f502741def771b94c656bf8b5b7b7f148a930e00000000000000000000000000000000000000000000000006f05b59d3b20003f8dd5e39a09165ac6f78d6e4e38c07ee1b85cd9c0c109e3875dd38c411542ff4f3b3ccb415be6bb6735532f53ea67d407e49e0d5d7b99fe0de0f5c49f9da3fad", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129181184", + { + "accountingExtension": "0xCA826F8feAdcF20b2c0d50019199ceA2B62C4cC7", + "bondSize": "500000000000000003", + "bondToken": "0x75f502741def771B94c656BF8b5b7b7F148a930e", + "deadline": "112564709967749425184314086071684882232174773517983829235624129600201071800308", + "disputeWindow": "110229700641664101210984642912501714027284836539036269317787492668732763422637" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38892, + "blockTimestampDelay": 395331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128430336" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 4 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc82f34f9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0000", + "dataAbiValues": { + "methodSignature": "handleSettleBondEscalation(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "115792089237316195423570985008687907853269984665640564039457584007913129312256" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 113161 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4492e64b41916de5b94d992b242b245ce626a3dd9c7254209d1570cf319fa441fd1000000000000000000000000000000000000000000000000000000000008fffd0fa843072bf2005848c182b7849f66291f398bbb4dafa0e91ec02b6a91d418b672d4cd830dfe7246067a1b8779402dfb7b658d530dd840edc5012d689d2c9579", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "20984318732057524363726518924471354496680932310149856273743839135273616416721", + "589821", + "7081985645984608152432907279403883877639977254641757337320076223831621245110", + "51939654707453224176314972721194901176628383443245907877596385748832861590905" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17276, + "blockTimestampDelay": 163731 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c740000000000000000000000000000000000000000000000000000000000010000b7d9c274be2bab775c3f0c67272c24e432bd17847d8d572c22e3bcbb93effe8a", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "65536", + "b7d9c274be2bab775c3f0c67272c24e432bd17847d8d572c22e3bcbb93effe8a" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 5055, + "blockTimestampDelay": 233600 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb550870000000000000000000000000000000000000000000000000000000000090000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "589824" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 32888, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x554384651676267f0f7bea50c3144ae4e2baa4c5c6c43120dd776d813464250e09efd5560000000000000000000000005d52af464621f4bc06c88cb2ce9f9e7d74fd3422", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "10159636314380774835278947121760878401829355612383499588542760074484202329430", + { + "arbitrator": "0x5D52af464621f4Bc06c88cB2cE9F9e7D74Fd3422" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53908, + "blockTimestampDelay": 60042 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xbf938c53", + "dataAbiValues": { + "methodSignature": "property_sanityCheck()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17266, + "blockTimestampDelay": 360623 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803606635000-d68a6881-2741-489a-b7bd-a28264c8897a.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803606635000-d68a6881-2741-489a-b7bd-a28264c8897a.json new file mode 100755 index 0000000..bffec95 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803606635000-d68a6881-2741-489a-b7bd-a28264c8897a.json @@ -0,0 +1,635 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c573a80b81e8d97661fbf779db19fd00793e39f3b40bca612ee408ab75ff1c6439cf047509736e50626b1084ee93f4294000f73db102927cdc7fc34de68c384da900e6c", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913130244736", + "83279546779206125286340055887058748934887896216240549764862301155730028032071", + "36452200662221151095065482565067302916782446267779931962683895890335455252076" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41956, + "blockTimestampDelay": 475112 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efaab191ad64d8fba3d052ab8ef37a088ba9faf5a1be696a47310de3441525ef897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3aaae444ec5312714f03b0566d2b40e5d34f58f068cabf3625fc0d7cfe3db912", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "77389853507359787864882669351213362161735184606551274462865365263877886900375", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "26536084675173092165947634556752584404681954305155475174391110206140234709266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18699, + "blockTimestampDelay": 240561 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcd2d78e343e1607b919341e2fe248544a49a0028fbd677a717f6a437862ddbc00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "95366551777850189910113500849756061153261920552639335948298155642211775921152" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16776, + "blockTimestampDelay": 165634 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087cd27e66c1a6365fdd2d452e5a6a582655000c0811d209ba0499f4483caf4b2da", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "92794631311208978202520326772644046682922248037671286389514014341863059010266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6256, + "blockTimestampDelay": 488143 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9128a1b5b9d7d3061f14bea63c8830170dadc5f154b01425336f91cc6d8611588ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "8385644986530251641334144830118419649455771804161689778824132977763480049032", + "115792089237316195423570985008687907853269984665640564039457584007913129639680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35699, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e30000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41252, + "blockTimestampDelay": 375602 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285caff44fb6a2363fac767b088aff222c3143f1ed041c9b3e47d6474ee4922e1979fec9d178675775c3aa5161a5a209a68597466d991483528cc71c8d6ac533d0955a137b7e6f635f28c37dc46d14755f62f1ce7b659dc1873b04e1744e54dc225b665dad307139d75a132cdb60e373e4b35bba44673f5ee3d0bfbf1ac491c3d0e75", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115461657188952309751477762153544746327107707569543270374831352475679717431199", + "107023389619990543669223297468939824753654796115418022982959364890624175966549", + "72920814456766912229072746410044959713398794893085675262607692768311068730806", + "46070226826296101107756227560930518318774961046515756120293728876851585945205" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 39447, + "blockTimestampDelay": 175903 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d37645351a8f36eba3b366024eafac86b09ad5a52e0d3cf42eb52112344ab3206000000000000000000000000d12fb9f7a711eb0caf6aac68aeaf04277804b39e000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003200000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00000b2104824bc90dc4bcf1e407a769278e1c443fdba6cf324b44962e4fea636424", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "25054466425052560783839884851311066245042877293899029878022208182382616064518", + { + "accountingExtension": "0xd12fb9f7A711Eb0caF6aaC68AEaF04277804B39e", + "bondSize": "52428800", + "bondToken": "0x000000000000000000000000000000000000000A", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "disputeWindow": "5033778407313201451107747851099848118306043382601391308246767880599192691748" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26656, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e74f8b00", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457284007913128430336" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 56799, + "blockTimestampDelay": 262144 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b804000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f0087104a1ac49782a4e16877da31b055635722ebf513f4c9d4971ee8ba22ecc4a6eec651143a3c6f38d013752a6418c6f09e02c569047e21b1821746f674b34b1c0000000000000000000000000000000000000000000000000000000000000036fa4a08dc093aad94a53150a69958ea5701d0cdfc0457647f4a00851f2b3ffa4ffd8a6288227c780955edaf8b4dede4dd79b2d6a1b9670dc32f84033dbf8be3094a3581399d5766a955990785635f7387f42bc3ac7aefc687d70bedd0207993bc4c485bed03b3790844630b99699bb40f5069c1d8403298cdfda2575a3317f64ae11593ffb0ec0927fe5913230c741395327603a0cb862e6b83dfda2f6220ae47cc515c273c51f6f72596a67c49bd9c8c601629067e48532c86a5ec436da6c5d4a086dd03f412f823cb3b33845d313ed20d3eb30a8c1738fe538f8ce08dda6bc903393b682ce82af7ad546cbd6f5e6b633403a16c9539778326f27093154073c189ff0c2a9bf1d9e0c1340059cb502459adc6848943173465070dbc70f56c9773a380843bf072ee4ebcdaa6db9c9b1bcdd7accd8376418847fe049b50be079824e34e17ba796d22717b906c8ae168c515652b146e98f67ff81a17d32cfbb3a45d70b80d8aebc1f699d448d6bb373046a46055cea8663f1e133e3b318bd3bbf341831782f5c84d3a2e123ae7cf9de566a9e5958314dac1f2f943af76cc5a4ed5d61bb435d28f2bc87a2c6a8b92b314537495d986c635f3f24b0c89bb8431fd15da1f20ecad2204c5f2c899891deee290ce478f20d080be1f01b0631cfde6d77c174a0451dff325ceca911fe96cc8e506f589259f7ae6d81a6562ad17da5ac2668afb4dfae5387e68f8f182b4cd18e2d04b3d23801beadb0e540b89182a8ef12544bf301a4ed791f0937f2169890e091a55113e6f5869333627389cfa9013231650d5b1193bc5c6faf12c4caedc4c1de1a155f1caac4b1b386f2c9fb59c0edddb79370ea902ef6cdf5724565bfb35d2d999e5b8ae7d2997c94e3ce7b6bfc8698850f5bea6ed28d2670ed0bc72485811f4579eee682784c336392515b9f38b305760c5f2a08ab4ab5c4e4dc94bfd7fe5a3c37df0d10561d5eee3109a165aa8d09aee107d8bc0847badc5833e23b36da204e51497d3f1716162337b2ca72a6d9b0df65af932d7fe5768c3a7a91282332e7768f46e57727280521bd0e3c9f183fa04f1c0e3d82bf7ea3b756ba92372a93cb61e730e2e59814916b3e92ea0d14277077195c6e7500b9f864c7baa380be57ffd71a995ea5594800861a797da989e5e145ccb01db898f989f4c6fde7d34bf056442d3839d229d6e8c8fd581525acabfa32dfd933d425b58fea110c87b5d18bd00fffbffa00d873198e501a825357e75a85912832c0f7dc92f5825797c2460c978f3e875aea0a979c0a4060871bbd79a9babf07212d556a72bb84496ad42f34884efeed068bfad56613cf714bca57b67944ed964fa024cbdc39fe0848bdeb5c884858a5ac18070bc1e4c0329f2d89fcaadcfdab6ef8a1532af54954a15ea5e23ce45325d9f98f0e3fb86d60b7a0397d2453942930b89e474cdda078d4d62f83b306800b744f407abb12457ab2002a4c1babaebbacd167f44ae7a2bcba0576b2bba82a9e92a2177c482c7e3607c94e731f1a05d19d027153f2b2e5e5fa02b5887eadf045f884b7410bc1af1eb756ae71476a0623a5c27fbd454617541c911c1ca7f76e1017369953940959affc0126bd3ec9ee985c1ac0733a0d152dc33ad991a56c05ed402b56772c434095bf2c563875bd1ef4f339a0116feea24de95ead8342f2cc38eb2eb85b85c3ecbb25e77ae77cbbeb5b4bbc22e5b5bae35469b6565c089be978e383bca0d9ea2bdf66b2c2022976a424700038eb0dd496185b4406b017eb667af2336bd343a6518cdb282ed1f4ad156a51a420357c104c259ffefcc61717fc2d33bbac669fd340b62448e7b1ff79817d2faacc25d75413c7765d42904380717b7dfba97b043ecf6e68448d74c814a84fcec4b8e91924a2d84756257a3f7b5be9993390cb0d83ea216c344cd01747e580a018abe2b78ff31d78a0376939df219b6e4348501b5cd4005a711a4cf2585665816a7e23ad88e6fce9816231f577a8a4cc99f0fb7042243727ff97dfb91a943382ca90c2df1ad395083a12f7234582ea05fb002ebe876e39b32b192b8ada3a742f234ac609ba886fe26fc693ae013386f1b8b4d4b3c0fca228fbbd7af483f28f0a6a1363b275abecc85f2bee9d3c5c82a69692d9e81a977c050c94a09db9ac1ec9c86f3a6e0085d60e0d08cd2f8711d90b4066d0b5dfa922675d11a734712b53ba0ccab9ab7a8fe313144d531d11397926ca47601f444c6e995d8c7bfe71bac0249f67ef196e0656ff7e065d21224aea23f74592d0df86b3869e0a08de6c436ae57b76cc6821c11d16b120219ecb3e66724bb9b913be1da889b5d3900926e267b2beaeca176baaa9f8c82b8d74a308a307751320c46e850a5eaea83c5acccf639b783f5606cebaf54d8c04499037c3ab777163747416a6910cb0352002b67", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "2", + "864000", + "61091015562669229328302511622207838274133483677802899134756790701318101320870", + "108000853268429518120666974822971079545728317287326968663692222929051051051804" + ], + [ + "fa4a08dc093aad94a53150a69958ea5701d0cdfc0457647f4a00851f2b3ffa4f", + "fd8a6288227c780955edaf8b4dede4dd79b2d6a1b9670dc32f84033dbf8be309", + "4a3581399d5766a955990785635f7387f42bc3ac7aefc687d70bedd0207993bc", + "4c485bed03b3790844630b99699bb40f5069c1d8403298cdfda2575a3317f64a", + "e11593ffb0ec0927fe5913230c741395327603a0cb862e6b83dfda2f6220ae47", + "cc515c273c51f6f72596a67c49bd9c8c601629067e48532c86a5ec436da6c5d4", + "a086dd03f412f823cb3b33845d313ed20d3eb30a8c1738fe538f8ce08dda6bc9", + "03393b682ce82af7ad546cbd6f5e6b633403a16c9539778326f27093154073c1", + "89ff0c2a9bf1d9e0c1340059cb502459adc6848943173465070dbc70f56c9773", + "a380843bf072ee4ebcdaa6db9c9b1bcdd7accd8376418847fe049b50be079824", + "e34e17ba796d22717b906c8ae168c515652b146e98f67ff81a17d32cfbb3a45d", + "70b80d8aebc1f699d448d6bb373046a46055cea8663f1e133e3b318bd3bbf341", + "831782f5c84d3a2e123ae7cf9de566a9e5958314dac1f2f943af76cc5a4ed5d6", + "1bb435d28f2bc87a2c6a8b92b314537495d986c635f3f24b0c89bb8431fd15da", + "1f20ecad2204c5f2c899891deee290ce478f20d080be1f01b0631cfde6d77c17", + "4a0451dff325ceca911fe96cc8e506f589259f7ae6d81a6562ad17da5ac2668a", + "fb4dfae5387e68f8f182b4cd18e2d04b3d23801beadb0e540b89182a8ef12544", + "bf301a4ed791f0937f2169890e091a55113e6f5869333627389cfa9013231650", + "d5b1193bc5c6faf12c4caedc4c1de1a155f1caac4b1b386f2c9fb59c0edddb79", + "370ea902ef6cdf5724565bfb35d2d999e5b8ae7d2997c94e3ce7b6bfc8698850", + "f5bea6ed28d2670ed0bc72485811f4579eee682784c336392515b9f38b305760", + "c5f2a08ab4ab5c4e4dc94bfd7fe5a3c37df0d10561d5eee3109a165aa8d09aee", + "107d8bc0847badc5833e23b36da204e51497d3f1716162337b2ca72a6d9b0df6", + "5af932d7fe5768c3a7a91282332e7768f46e57727280521bd0e3c9f183fa04f1", + "c0e3d82bf7ea3b756ba92372a93cb61e730e2e59814916b3e92ea0d142770771", + "95c6e7500b9f864c7baa380be57ffd71a995ea5594800861a797da989e5e145c", + "cb01db898f989f4c6fde7d34bf056442d3839d229d6e8c8fd581525acabfa32d", + "fd933d425b58fea110c87b5d18bd00fffbffa00d873198e501a825357e75a859", + "12832c0f7dc92f5825797c2460c978f3e875aea0a979c0a4060871bbd79a9bab", + "f07212d556a72bb84496ad42f34884efeed068bfad56613cf714bca57b67944e", + "d964fa024cbdc39fe0848bdeb5c884858a5ac18070bc1e4c0329f2d89fcaadcf", + "dab6ef8a1532af54954a15ea5e23ce45325d9f98f0e3fb86d60b7a0397d24539", + "42930b89e474cdda078d4d62f83b306800b744f407abb12457ab2002a4c1baba", + "ebbacd167f44ae7a2bcba0576b2bba82a9e92a2177c482c7e3607c94e731f1a0", + "5d19d027153f2b2e5e5fa02b5887eadf045f884b7410bc1af1eb756ae71476a0", + "623a5c27fbd454617541c911c1ca7f76e1017369953940959affc0126bd3ec9e", + "e985c1ac0733a0d152dc33ad991a56c05ed402b56772c434095bf2c563875bd1", + "ef4f339a0116feea24de95ead8342f2cc38eb2eb85b85c3ecbb25e77ae77cbbe", + "b5b4bbc22e5b5bae35469b6565c089be978e383bca0d9ea2bdf66b2c2022976a", + "424700038eb0dd496185b4406b017eb667af2336bd343a6518cdb282ed1f4ad1", + "56a51a420357c104c259ffefcc61717fc2d33bbac669fd340b62448e7b1ff798", + "17d2faacc25d75413c7765d42904380717b7dfba97b043ecf6e68448d74c814a", + "84fcec4b8e91924a2d84756257a3f7b5be9993390cb0d83ea216c344cd01747e", + "580a018abe2b78ff31d78a0376939df219b6e4348501b5cd4005a711a4cf2585", + "665816a7e23ad88e6fce9816231f577a8a4cc99f0fb7042243727ff97dfb91a9", + "43382ca90c2df1ad395083a12f7234582ea05fb002ebe876e39b32b192b8ada3", + "a742f234ac609ba886fe26fc693ae013386f1b8b4d4b3c0fca228fbbd7af483f", + "28f0a6a1363b275abecc85f2bee9d3c5c82a69692d9e81a977c050c94a09db9a", + "c1ec9c86f3a6e0085d60e0d08cd2f8711d90b4066d0b5dfa922675d11a734712", + "b53ba0ccab9ab7a8fe313144d531d11397926ca47601f444c6e995d8c7bfe71b", + "ac0249f67ef196e0656ff7e065d21224aea23f74592d0df86b3869e0a08de6c4", + "36ae57b76cc6821c11d16b120219ecb3e66724bb9b913be1da889b5d3900926e", + "267b2beaeca176baaa9f8c82b8d74a308a307751320c46e850a5eaea83c5accc", + "f639b783f5606cebaf54d8c04499037c3ab777163747416a6910cb0352002b67" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40713, + "blockTimestampDelay": 288890 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3bb1a2084cb159fd6a10d243726c06ecc2c061e64fa5637a4e1e36ecd536af41a", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "84628665144738400938347255498120459236162163404711567437113231227400449881114" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40461, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e35136d12e4fabb2fa40b59d097a7d5e4dc2581129e405d2d808b39933f643e93e", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "36734194190276940096273241257659402973542659853799331442674641708617136597310" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0a9473a1fb03242c6ca0cf72ce918a668d75a7aef4f15a0d33f1a7b490a38de2b", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904", + "76566718707773384903225614118535891165433973603151251259517762515743289171499" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 47596, + "blockTimestampDelay": 550258 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417a00000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "196608", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49468, + "blockTimestampDelay": 531192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c27f5e2b5585f4a318b516ae77e2bcf1d0c6c69d73f617d0ad2dbeddce25ff7ba910000000000000000000000000000000000000000000000000000000000000100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "111217206938139444968553110676306921351727538827093245698432831002069798730385", + "256", + "115792089237316195423570985008687907853269984665640564039457584007913129639681" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58448, + "blockTimestampDelay": 291208 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137447d666f967a2435f360ae1a5d74411418e2552cde02c3fbb44404f0b7f0b7418000000000000000000000000000000000000000000000000000000000000004016d6fce3ebe57504d74c895dd764984c1a0fd9bc84e53996fe9d1fdbe18087310000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000382997ddbd0ec071e601a74bec3b18f95a929e2c8f2fc57697f8fb476f87fce56000000000000000000000000000000000000000000000000000000000000000273d0000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "32493028223342497817984115926415147953105366173154533585631663319985412600856", + { + "accountingExtension": "0x0000000000000000000000000000000000000003", + "chainId": "s\ufffd", + "epoch": "10330733325524501176169902709898413906911149832921865654336546665583987427121", + "paymentAmount": "59071866561259445092599584718662586641316079064498865051383233255850771467862" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 60461, + "blockTimestampDelay": 141927 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeae7d", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129553533" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294612566bf9a56551713402058b178bf9334e16a430e78e53610b3f6114f2e572000000000000000000000000000000000000000000000000000000000000000200000000000000000000000018d46a62722e6eafc069b97c7a78574ce775f12972176491145ebf6cab47d070a505484213e19c33bd80bea8025c039a73381b46fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd97e0eb0dc1b379e381e4fe6763a824517b98db81bcc6b00d254c5ccfca3f2ac18b9668134e813d08414573dcc8f081b6e06ecf54faff7d640eb4d6256186486c", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "31694299109185575978093051252844457975556191736261404991840997988919212696946", + { + "accountingExtension": "0x0000000000000000000000000000000000000002", + "bondEscalationDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639933", + "bondSize": "51604996306954439705122303006796123301392110440900451331152134443247940934470", + "bondToken": "0x18D46A62722e6EaFC069B97C7a78574Ce775f129", + "disputeWindow": "63137231314917362874984632942434005220138982617699967905479977286643722111084", + "maxNumberOfEscalations": "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "tyingBuffer": "68696636159853489678209085642458599054486261706714901038271685491028301654721" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20610, + "blockTimestampDelay": 50559 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803607978000-d99cfb6e-8259-4051-98fc-484c2b1166c0.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803607978000-d99cfb6e-8259-4051-98fc-484c2b1166c0.json new file mode 100755 index 0000000..594868b --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803607978000-d99cfb6e-8259-4051-98fc-484c2b1166c0.json @@ -0,0 +1,529 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574403" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43748, + "blockTimestampDelay": 541010 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f790139ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 11833, + "blockTimestampDelay": 213928 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d7f4bab9c72ef04decea93d5f106890883b64be0e4f50aa1ceebd5a435a7fa13a0000000000000000000000001302f0402bb094e65a1c38fc8979628fa7cb7eb80000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000d2f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "57577429716414119383889913852992200380066446236494108346454295294682507223354", + { + "accountingExtension": "0x1302F0402bb094e65a1c38fC8979628FA7cb7eB8", + "bondSize": "864000", + "bondToken": "0x0000000000000000000000000000000000093A80", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639935" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30759, + "blockTimestampDelay": 56734 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff30838cd661e07d4920a4bce6f00da019a66f1a0c976d396f8827e2cc52ed8ce1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "21943445721707534311606538764242968064099548519492097564976924267444655983841", + "115792089237316195423570985008687907853269984665640564039457584007913129115648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000ffff800000000000000000000000000000000000000000000000000000000007", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "115791205813783806231406193359937536394012070923692126229978523204812483330055" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23928, + "blockTimestampDelay": 603784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c7440906eb1080127929789d55c169cd890ff51930058d460b835803e947a1382a9e3a84eb76ecf8f296e15f27686df9d7107dae93af0929c31ee8d76fd38476ee4", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "29203212251508816547276680880804676973046658682524638891611434720618890887849", + "e3a84eb76ecf8f296e15f27686df9d7107dae93af0929c31ee8d76fd38476ee4" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8633, + "blockTimestampDelay": 384652 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417afffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000e9d23751886f170e2b576c9a16ce5725aaa7d6b5a51829b582417606f258a52e", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128591360", + "105760313397677454187313767699264694345051805328600745402406216015374137730350" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace00000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000b8000000000000000000000000000000000000000000000000000000000000000018e16328353e4335d4857f0c0272a56e894016a8e7fd5018abf59e4d63ffccc5d", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "458752", + "2944", + "1", + "64267643762154101036828179854063870619362775084021579500394794132351915707485" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 164, + "blockTimestampDelay": 328 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d34c37e1c6d066da117417045ecbb977d5fedb1a4f579c688036dfc2df96e8752a043feae6e9cd4dd5562baba0f9a2b8b88a6d24a210411d2a9ec010c887b2bbe857bd07a491da874930cf70d2603f546341bf1b41678d94212ad0d7f75f1f8c34", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "34474511333835792082501049571137601504043270057660531960180087278390018077994", + "1922183993469207343531967439441002744253338739077547349842513920358809254888", + "39685204671003151059797908428363376637491661590041500229844100997746182294580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13776, + "blockTimestampDelay": 196607 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf2150000000000000000000000000000000000000000000000000429d069189e0000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "300000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 73, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29ef15b65782cfe591a01276bbd3a4a416a4bc7c3c46d4a2a065776ceef8729dba0000000000000000000000000413cb2b8393acd243f05fe1fc92f0f33645674b0000000000000000000000000000000000000000000000000000000000030000fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b000000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000d2ba62ed8591040e27c905c9f23b93ea29ed2e248c13da4976202a1dc77c2ba8", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "108141133076887610497531349483470932814278164634546444848861358676425430965690", + { + "accountingExtension": "0x0413cb2b8393aCD243f05fe1fC92f0F33645674B", + "bondEscalationDeadline": "0", + "bondSize": "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "bondToken": "0x0000000000000000000000000000000000030000", + "disputeWindow": "95315014531250257482381499157059680862481424202393349630157942686167364021160", + "maxNumberOfEscalations": "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007913129050112" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38581, + "blockTimestampDelay": 108799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137450d770be3b639c40475b7c2d9b38d9e215fe44b7581f0c70a37d8c0a641edafd0000000000000000000000000000000000000000000000000000000000000040fffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e762000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000429d069189e0000faaa954e38a0b2b00899664d61354e2cfff2f66f0626a1fe18153ff26908fb17000000000000000000000000000000000000000000000000000000000000002245524332303a206275726e20616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "36565678129823773534549762252589227787369831080370959419522126439904133962493", + { + "accountingExtension": "0x0000000000000000000000000429d069189E0000", + "chainId": "ERC20: burn amount exceeds balance", + "epoch": "115792089237316195423570985008687907853269984665640564039457284007913129639936", + "paymentAmount": "113379606615874029916799118804079911196343283863948566571202567108031238699799" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 37714, + "blockTimestampDelay": 360627 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803608778000-cba6387c-87fd-4774-b883-b02dc21edbe1.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803608778000-cba6387c-87fd-4774-b883-b02dc21edbe1.json new file mode 100755 index 0000000..3e46697 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803608778000-cba6387c-87fd-4774-b883-b02dc21edbe1.json @@ -0,0 +1,501 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e57cf479b021a816743ff5b53a6f3e5c2c247b2adb9311a44237c3858abd44df0e0000000000000000000000000000000000000000000000000000000000127118", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "56518743767933985910260346386765678340564227438862784222762849925209918856974", + "1208600" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35385, + "blockTimestampDelay": 50692 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007861590032384" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 57134 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b6811b3175568497fde3c31fe069ccc7985311b0506f3b43e70969ab59ea722d2599", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "12299832254764069471447641000592064088020729744720327828938364394997925356953" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098ea6e532d597161bf414844541b5281607abc0fedcfbe19700823ca81bfeffd5da", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "75488891688353701349182521546099519030572206284453220585196006136091846366682" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13249, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff000000000000000000000000000000000000000000000000000000000009688043d2cc6bee2c75afbb0a2d8e686ed8d850d35e4220dab9eaaad8c1f2bbd315eb000040ba1702262dc3924484fe5b466a7207d688c9429f8aaeb64c1acd0d86e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "616576", + "30677409604733962472433633135176719636373390531562919397962760076773674915307", + "446728739341497667529209047101419397582060126024847855090499938302133985", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28736, + "blockTimestampDelay": 576650 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14857, + "blockTimestampDelay": 578411 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000053817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "53817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c2700db944f945348b4c6cffca09ace97414e862af57bfe67d15e8f4ba3813ede4b3d688e69cd534e15f8ccc3765fd50e2ab30d2b740b3ff6d5865213182fe783c63b4bac2923dad06e124a6e05ae7aa5ae1b3e8edff0154acd1de94e5fe6e26732", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "387963111102058097323071002434237761651493831039740349958407635767455047243", + "27775818758715135462630212585325327395456425224261459780030383525521640620998", + "26820159805776502209708934821205059577225837408551437026198979884765463865138" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25200, + "blockTimestampDelay": 27983 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc1800001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648", + "220855883097298041197912187592864814478435487109452369765200775161577471" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50518, + "blockTimestampDelay": 458752 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f000000000000000000000000000000000000000000000000000000000005d100", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "381184" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23639, + "blockTimestampDelay": 195785 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbd1599870fe02ecf9ec87ee76accd2d760e7eba60278962813ea05d348dc178e41", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "9769829584924913960676332702159746411403704490750429962740385280098947272257" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2685, + "blockTimestampDelay": 487244 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffedea0275f3411a7ad187b0108aa786a3f16bde9", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008681454588525719193607429938766044948827876015593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15207, + "blockTimestampDelay": 220921 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57e286bb06cb42cc1cd185bc3f02cfcd592fc3e9b10aa00b2c2b633d09978af7a7", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "102460752096230911141037771748726806398872347580671159824723173728064937588647" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12095, + "blockTimestampDelay": 12289 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803609589000-741509d7-8c95-4626-b5c3-c17625f529b5.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803609589000-741509d7-8c95-4626-b5c3-c17625f529b5.json new file mode 100755 index 0000000..506127c --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803609589000-741509d7-8c95-4626-b5c3-c17625f529b5.json @@ -0,0 +1,829 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c573a80b81e8d97661fbf779db19fd00793e39f3b40bca612ee408ab75ff1c6439cf047509736e50626b1084ee93f4294000f73db102927cdc7fc34de68c384da900e6c", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913130244736", + "83279546779206125286340055887058748934887896216240549764862301155730028032071", + "36452200662221151095065482565067302916782446267779931962683895890335455252076" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41956, + "blockTimestampDelay": 475112 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efaab191ad64d8fba3d052ab8ef37a088ba9faf5a1be696a47310de3441525ef897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3aaae444ec5312714f03b0566d2b40e5d34f58f068cabf3625fc0d7cfe3db912", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "77389853507359787864882669351213362161735184606551274462865365263877886900375", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "26536084675173092165947634556752584404681954305155475174391110206140234709266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18699, + "blockTimestampDelay": 240561 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcd2d78e343e1607b919341e2fe248544a49a0028fbd677a717f6a437862ddbc00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "95366551777850189910113500849756061153261920552639335948298155642211775921152" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16776, + "blockTimestampDelay": 165634 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087cd27e66c1a6365fdd2d452e5a6a582655000c0811d209ba0499f4483caf4b2da", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "92794631311208978202520326772644046682922248037671286389514014341863059010266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6256, + "blockTimestampDelay": 488143 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9128a1b5b9d7d3061f14bea63c8830170dadc5f154b01425336f91cc6d8611588ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "8385644986530251641334144830118419649455771804161689778824132977763480049032", + "115792089237316195423570985008687907853269984665640564039457584007913129639680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35699, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e30000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41252, + "blockTimestampDelay": 375602 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285caff44fb6a2363fac767b088aff222c3143f1ed041c9b3e47d6474ee4922e1979fec9d178675775c3aa5161a5a209a68597466d991483528cc71c8d6ac533d0955a137b7e6f635f28c37dc46d14755f62f1ce7b659dc1873b04e1744e54dc225b665dad307139d75a132cdb60e373e4b35bba44673f5ee3d0bfbf1ac491c3d0e75", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115461657188952309751477762153544746327107707569543270374831352475679717431199", + "107023389619990543669223297468939824753654796115418022982959364890624175966549", + "72920814456766912229072746410044959713398794893085675262607692768311068730806", + "46070226826296101107756227560930518318774961046515756120293728876851585945205" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 39447, + "blockTimestampDelay": 175903 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d37645351a8f36eba3b366024eafac86b09ad5a52e0d3cf42eb52112344ab3206000000000000000000000000d12fb9f7a711eb0caf6aac68aeaf04277804b39e000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003200000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00000b2104824bc90dc4bcf1e407a769278e1c443fdba6cf324b44962e4fea636424", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "25054466425052560783839884851311066245042877293899029878022208182382616064518", + { + "accountingExtension": "0xd12fb9f7A711Eb0caF6aaC68AEaF04277804B39e", + "bondSize": "52428800", + "bondToken": "0x000000000000000000000000000000000000000A", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "disputeWindow": "5033778407313201451107747851099848118306043382601391308246767880599192691748" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26656, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e74f8b00", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457284007913128430336" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 56799, + "blockTimestampDelay": 262144 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b804000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000d2f0087104a1ac49782a4e16877da31b055635722ebf513f4c9d4971ee8ba22ecc4a6eec651143a3c6f38d013752a6418c6f09e02c569047e21b1821746f674b34b1c0000000000000000000000000000000000000000000000000000000000000036fa4a08dc093aad94a53150a69958ea5701d0cdfc0457647f4a00851f2b3ffa4ffd8a6288227c780955edaf8b4dede4dd79b2d6a1b9670dc32f84033dbf8be3094a3581399d5766a955990785635f7387f42bc3ac7aefc687d70bedd0207993bc4c485bed03b3790844630b99699bb40f5069c1d8403298cdfda2575a3317f64ae11593ffb0ec0927fe5913230c741395327603a0cb862e6b83dfda2f6220ae47cc515c273c51f6f72596a67c49bd9c8c601629067e48532c86a5ec436da6c5d4a086dd03f412f823cb3b33845d313ed20d3eb30a8c1738fe538f8ce08dda6bc903393b682ce82af7ad546cbd6f5e6b633403a16c9539778326f27093154073c189ff0c2a9bf1d9e0c1340059cb502459adc6848943173465070dbc70f56c9773a380843bf072ee4ebcdaa6db9c9b1bcdd7accd8376418847fe049b50be079824e34e17ba796d22717b906c8ae168c515652b146e98f67ff81a17d32cfbb3a45d70b80d8aebc1f699d448d6bb373046a46055cea8663f1e133e3b318bd3bbf341831782f5c84d3a2e123ae7cf9de566a9e5958314dac1f2f943af76cc5a4ed5d61bb435d28f2bc87a2c6a8b92b314537495d986c635f3f24b0c89bb8431fd15da1f20ecad2204c5f2c899891deee290ce478f20d080be1f01b0631cfde6d77c174a0451dff325ceca911fe96cc8e506f589259f7ae6d81a6562ad17da5ac2668afb4dfae5387e68f8f182b4cd18e2d04b3d23801beadb0e540b89182a8ef12544bf301a4ed791f0937f2169890e091a55113e6f5869333627389cfa9013231650d5b1193bc5c6faf12c4caedc4c1de1a155f1caac4b1b386f2c9fb59c0edddb79370ea902ef6cdf5724565bfb35d2d999e5b8ae7d2997c94e3ce7b6bfc8698850f5bea6ed28d2670ed0bc72485811f4579eee682784c336392515b9f38b305760c5f2a08ab4ab5c4e4dc94bfd7fe5a3c37df0d10561d5eee3109a165aa8d09aee107d8bc0847badc5833e23b36da204e51497d3f1716162337b2ca72a6d9b0df65af932d7fe5768c3a7a91282332e7768f46e57727280521bd0e3c9f183fa04f1c0e3d82bf7ea3b756ba92372a93cb61e730e2e59814916b3e92ea0d14277077195c6e7500b9f864c7baa380be57ffd71a995ea5594800861a797da989e5e145ccb01db898f989f4c6fde7d34bf056442d3839d229d6e8c8fd581525acabfa32dfd933d425b58fea110c87b5d18bd00fffbffa00d873198e501a825357e75a85912832c0f7dc92f5825797c2460c978f3e875aea0a979c0a4060871bbd79a9babf07212d556a72bb84496ad42f34884efeed068bfad56613cf714bca57b67944ed964fa024cbdc39fe0848bdeb5c884858a5ac18070bc1e4c0329f2d89fcaadcfdab6ef8a1532af54954a15ea5e23ce45325d9f98f0e3fb86d60b7a0397d2453942930b89e474cdda078d4d62f83b306800b744f407abb12457ab2002a4c1babaebbacd167f44ae7a2bcba0576b2bba82a9e92a2177c482c7e3607c94e731f1a05d19d027153f2b2e5e5fa02b5887eadf045f884b7410bc1af1eb756ae71476a0623a5c27fbd454617541c911c1ca7f76e1017369953940959affc0126bd3ec9ee985c1ac0733a0d152dc33ad991a56c05ed402b56772c434095bf2c563875bd1ef4f339a0116feea24de95ead8342f2cc38eb2eb85b85c3ecbb25e77ae77cbbeb5b4bbc22e5b5bae35469b6565c089be978e383bca0d9ea2bdf66b2c2022976a424700038eb0dd496185b4406b017eb667af2336bd343a6518cdb282ed1f4ad156a51a420357c104c259ffefcc61717fc2d33bbac669fd340b62448e7b1ff79817d2faacc25d75413c7765d42904380717b7dfba97b043ecf6e68448d74c814a84fcec4b8e91924a2d84756257a3f7b5be9993390cb0d83ea216c344cd01747e580a018abe2b78ff31d78a0376939df219b6e4348501b5cd4005a711a4cf2585665816a7e23ad88e6fce9816231f577a8a4cc99f0fb7042243727ff97dfb91a943382ca90c2df1ad395083a12f7234582ea05fb002ebe876e39b32b192b8ada3a742f234ac609ba886fe26fc693ae013386f1b8b4d4b3c0fca228fbbd7af483f28f0a6a1363b275abecc85f2bee9d3c5c82a69692d9e81a977c050c94a09db9ac1ec9c86f3a6e0085d60e0d08cd2f8711d90b4066d0b5dfa922675d11a734712b53ba0ccab9ab7a8fe313144d531d11397926ca47601f444c6e995d8c7bfe71bac0249f67ef196e0656ff7e065d21224aea23f74592d0df86b3869e0a08de6c436ae57b76cc6821c11d16b120219ecb3e66724bb9b913be1da889b5d3900926e267b2beaeca176baaa9f8c82b8d74a308a307751320c46e850a5eaea83c5acccf639b783f5606cebaf54d8c04499037c3ab777163747416a6910cb0352002b67", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "2", + "864000", + "61091015562669229328302511622207838274133483677802899134756790701318101320870", + "108000853268429518120666974822971079545728317287326968663692222929051051051804" + ], + [ + "fa4a08dc093aad94a53150a69958ea5701d0cdfc0457647f4a00851f2b3ffa4f", + "fd8a6288227c780955edaf8b4dede4dd79b2d6a1b9670dc32f84033dbf8be309", + "4a3581399d5766a955990785635f7387f42bc3ac7aefc687d70bedd0207993bc", + "4c485bed03b3790844630b99699bb40f5069c1d8403298cdfda2575a3317f64a", + "e11593ffb0ec0927fe5913230c741395327603a0cb862e6b83dfda2f6220ae47", + "cc515c273c51f6f72596a67c49bd9c8c601629067e48532c86a5ec436da6c5d4", + "a086dd03f412f823cb3b33845d313ed20d3eb30a8c1738fe538f8ce08dda6bc9", + "03393b682ce82af7ad546cbd6f5e6b633403a16c9539778326f27093154073c1", + "89ff0c2a9bf1d9e0c1340059cb502459adc6848943173465070dbc70f56c9773", + "a380843bf072ee4ebcdaa6db9c9b1bcdd7accd8376418847fe049b50be079824", + "e34e17ba796d22717b906c8ae168c515652b146e98f67ff81a17d32cfbb3a45d", + "70b80d8aebc1f699d448d6bb373046a46055cea8663f1e133e3b318bd3bbf341", + "831782f5c84d3a2e123ae7cf9de566a9e5958314dac1f2f943af76cc5a4ed5d6", + "1bb435d28f2bc87a2c6a8b92b314537495d986c635f3f24b0c89bb8431fd15da", + "1f20ecad2204c5f2c899891deee290ce478f20d080be1f01b0631cfde6d77c17", + "4a0451dff325ceca911fe96cc8e506f589259f7ae6d81a6562ad17da5ac2668a", + "fb4dfae5387e68f8f182b4cd18e2d04b3d23801beadb0e540b89182a8ef12544", + "bf301a4ed791f0937f2169890e091a55113e6f5869333627389cfa9013231650", + "d5b1193bc5c6faf12c4caedc4c1de1a155f1caac4b1b386f2c9fb59c0edddb79", + "370ea902ef6cdf5724565bfb35d2d999e5b8ae7d2997c94e3ce7b6bfc8698850", + "f5bea6ed28d2670ed0bc72485811f4579eee682784c336392515b9f38b305760", + "c5f2a08ab4ab5c4e4dc94bfd7fe5a3c37df0d10561d5eee3109a165aa8d09aee", + "107d8bc0847badc5833e23b36da204e51497d3f1716162337b2ca72a6d9b0df6", + "5af932d7fe5768c3a7a91282332e7768f46e57727280521bd0e3c9f183fa04f1", + "c0e3d82bf7ea3b756ba92372a93cb61e730e2e59814916b3e92ea0d142770771", + "95c6e7500b9f864c7baa380be57ffd71a995ea5594800861a797da989e5e145c", + "cb01db898f989f4c6fde7d34bf056442d3839d229d6e8c8fd581525acabfa32d", + "fd933d425b58fea110c87b5d18bd00fffbffa00d873198e501a825357e75a859", + "12832c0f7dc92f5825797c2460c978f3e875aea0a979c0a4060871bbd79a9bab", + "f07212d556a72bb84496ad42f34884efeed068bfad56613cf714bca57b67944e", + "d964fa024cbdc39fe0848bdeb5c884858a5ac18070bc1e4c0329f2d89fcaadcf", + "dab6ef8a1532af54954a15ea5e23ce45325d9f98f0e3fb86d60b7a0397d24539", + "42930b89e474cdda078d4d62f83b306800b744f407abb12457ab2002a4c1baba", + "ebbacd167f44ae7a2bcba0576b2bba82a9e92a2177c482c7e3607c94e731f1a0", + "5d19d027153f2b2e5e5fa02b5887eadf045f884b7410bc1af1eb756ae71476a0", + "623a5c27fbd454617541c911c1ca7f76e1017369953940959affc0126bd3ec9e", + "e985c1ac0733a0d152dc33ad991a56c05ed402b56772c434095bf2c563875bd1", + "ef4f339a0116feea24de95ead8342f2cc38eb2eb85b85c3ecbb25e77ae77cbbe", + "b5b4bbc22e5b5bae35469b6565c089be978e383bca0d9ea2bdf66b2c2022976a", + "424700038eb0dd496185b4406b017eb667af2336bd343a6518cdb282ed1f4ad1", + "56a51a420357c104c259ffefcc61717fc2d33bbac669fd340b62448e7b1ff798", + "17d2faacc25d75413c7765d42904380717b7dfba97b043ecf6e68448d74c814a", + "84fcec4b8e91924a2d84756257a3f7b5be9993390cb0d83ea216c344cd01747e", + "580a018abe2b78ff31d78a0376939df219b6e4348501b5cd4005a711a4cf2585", + "665816a7e23ad88e6fce9816231f577a8a4cc99f0fb7042243727ff97dfb91a9", + "43382ca90c2df1ad395083a12f7234582ea05fb002ebe876e39b32b192b8ada3", + "a742f234ac609ba886fe26fc693ae013386f1b8b4d4b3c0fca228fbbd7af483f", + "28f0a6a1363b275abecc85f2bee9d3c5c82a69692d9e81a977c050c94a09db9a", + "c1ec9c86f3a6e0085d60e0d08cd2f8711d90b4066d0b5dfa922675d11a734712", + "b53ba0ccab9ab7a8fe313144d531d11397926ca47601f444c6e995d8c7bfe71b", + "ac0249f67ef196e0656ff7e065d21224aea23f74592d0df86b3869e0a08de6c4", + "36ae57b76cc6821c11d16b120219ecb3e66724bb9b913be1da889b5d3900926e", + "267b2beaeca176baaa9f8c82b8d74a308a307751320c46e850a5eaea83c5accc", + "f639b783f5606cebaf54d8c04499037c3ab777163747416a6910cb0352002b67" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40713, + "blockTimestampDelay": 288890 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3bb1a2084cb159fd6a10d243726c06ecc2c061e64fa5637a4e1e36ecd536af41a", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "84628665144738400938347255498120459236162163404711567437113231227400449881114" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40461, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e35136d12e4fabb2fa40b59d097a7d5e4dc2581129e405d2d808b39933f643e93e", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "36734194190276940096273241257659402973542659853799331442674641708617136597310" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0a9473a1fb03242c6ca0cf72ce918a668d75a7aef4f15a0d33f1a7b490a38de2b", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904", + "76566718707773384903225614118535891165433973603151251259517762515743289171499" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 47596, + "blockTimestampDelay": 550258 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417a00000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "196608", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49468, + "blockTimestampDelay": 531192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c27f5e2b5585f4a318b516ae77e2bcf1d0c6c69d73f617d0ad2dbeddce25ff7ba910000000000000000000000000000000000000000000000000000000000000100ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "111217206938139444968553110676306921351727538827093245698432831002069798730385", + "256", + "115792089237316195423570985008687907853269984665640564039457584007913129639681" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58448, + "blockTimestampDelay": 291208 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137447d666f967a2435f360ae1a5d74411418e2552cde02c3fbb44404f0b7f0b7418000000000000000000000000000000000000000000000000000000000000004016d6fce3ebe57504d74c895dd764984c1a0fd9bc84e53996fe9d1fdbe18087310000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000382997ddbd0ec071e601a74bec3b18f95a929e2c8f2fc57697f8fb476f87fce56000000000000000000000000000000000000000000000000000000000000000273d0000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "32493028223342497817984115926415147953105366173154533585631663319985412600856", + { + "accountingExtension": "0x0000000000000000000000000000000000000003", + "chainId": "s\ufffd", + "epoch": "10330733325524501176169902709898413906911149832921865654336546665583987427121", + "paymentAmount": "59071866561259445092599584718662586641316079064498865051383233255850771467862" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 60461, + "blockTimestampDelay": 141927 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeae7d", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129553533" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294612566bf9a56551713402058b178bf9334e16a430e78e53610b3f6114f2e572000000000000000000000000000000000000000000000000000000000000000200000000000000000000000018d46a62722e6eafc069b97c7a78574ce775f12972176491145ebf6cab47d070a505484213e19c33bd80bea8025c039a73381b46fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd97e0eb0dc1b379e381e4fe6763a824517b98db81bcc6b00d254c5ccfca3f2ac18b9668134e813d08414573dcc8f081b6e06ecf54faff7d640eb4d6256186486c", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "31694299109185575978093051252844457975556191736261404991840997988919212696946", + { + "accountingExtension": "0x0000000000000000000000000000000000000002", + "bondEscalationDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639933", + "bondSize": "51604996306954439705122303006796123301392110440900451331152134443247940934470", + "bondToken": "0x18D46A62722e6EaFC069B97C7a78574Ce775f129", + "disputeWindow": "63137231314917362874984632942434005220138982617699967905479977286643722111084", + "maxNumberOfEscalations": "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "tyingBuffer": "68696636159853489678209085642458599054486261706714901038271685491028301654721" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20610, + "blockTimestampDelay": 50559 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c742e693f54b35fa5d59ec7953d3d92c6c7321e518cbc79bb814991c6e38f5e3a3b39aa5c9d593e01f0e71bc219c99a7b0f669cacf8042cd6f7799e6b55d0d6b295", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "20992347070177599493552861158782242658616332286840658514010375208108738624059", + "39aa5c9d593e01f0e71bc219c99a7b0f669cacf8042cd6f7799e6b55d0d6b295" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20220, + "blockTimestampDelay": 415244 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa5628fe26e3155794c9672436827dce1d88dc59c36825e4dbc840be7b15b3945f3", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "44580881056887387257556915461952599311513410767387100456778677309001344566771" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20553, + "blockTimestampDelay": 432000 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x40605c3f0000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000047687677d0c6f67a9956de9987d3e8b159a0d3c12ad8f44dcf63a5e9fe7ae5ed3836c16ceef8f711d08c56d2883a542ac041c7b48b785d2419068f9a62edcd7aea0000000000000000000000000000000000000000000000000000000000000000edf7ce6770dd66f7bdcce36fc92a787d6426f09349d5baa2304120109a773e6881e245155e0ed0cd3d341cd42a57b85936f48fb474504d089e886946d60b7576e3a146458f9f31b03b050bfd1076e75bd82c2a42ee9f781bd024c95aaed1c3328f5fbec5b96c71ef236600dc1c449129b85c991ad1b7523aa54e8ea5621f5987e12335585b7f58b9b432b8b95f5fd4b96c0b638e4520eff7ebe46e3da077283efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5ff00000000000000000000000000000000000000000000000000000000000000000208c3d9dcb20ce04dfbed1a8c1c517cbb033585ec3e9aa7dfe09e91e3bb36464d98fba04831dcd2b3e695b54803c55187d640e45af514fe5c0f8081f44fbcbeadfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000000000000000000000000000000000000000000000000000000000080000a7914c10414c7bbb28e53dc2c688b52ca379cb0617309744884835320aa1713a80e524d9968af1ce0b859abebe59bf209b97f4e355d4be48e33124a9a4c73c9d4d0c53ce9c8d29ba273e68a6b3d85ca9f293cd46561486c23200749a0d8d411f6fc9448bb49ba795c03571e22825f0641bba1bc2a8b54733e949f6724d96eb884495e22ccb540d20202d5fa0d71109610521d4e07b0cd370531ef82b7255a85c696b94cec6c8592bc81599bafa0c68c62418dab9f4186ab1e69b7c59b92e80a51ba716e5f4c3d0fbaadae95ec36df0525837af55a6febc2c9689dc3927ef9078000000000000000000000000000000000000000000000000000000000000000a47d016964331660942cdcfa0676a830caedaf4db51a76f4b83ddea96ca711643fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580022ec5efeafce51a8de578c83e5d849f66594a0d307c30a3187052b6c205f99c109be70d42a58d5a7da348ccb74b3ed1ddd72a8836d6a852bad67603a37ba875000000000000000000000000000000000000000000000000000000000001518053d957c2c1f5ccc418309c4069b6c0be545d7b5ffb47492c0a301d7f0ec4b1d685963b153983c03f793bb0b8478e9a98c71ae488586e6f7c198453b6434914ae468a811a40716f1bc76e368a87a2ce5f45b008407f425d25953533f66cf9a7de808bb0b45503a9b7c4992dff96ccf858f68f88d385a58a45852255e7c2a401e8e096bedec30949990986924a9e8efb76f8fa9e1c9809016ea95f61bf96edbc2f492e56bea6a5df3db0a92fe23c15ffbc48aecf3d2d9a1d11077ee5c10aa3b8b500000000000000000000000000000000000000000000000000000000000500000000c22e450672894ab6cd8efb11d33f5617839a5bc7dea00c22e450672894a99df55d0f76bee4bcf80f8e37f4c035ac38c35fb484100a223cd0dfa9dd353eaafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000000000000069780d924264f3898c6ca908dbe653a4417f1bbb7adfd75548319bf0485ad6aafde822e12ace8656b33eb3d6dcf829cec280dad58216e3441a45d78320f925ef4c2c7fc161600886833ad8999595a9b8a17b8340b50b143261691dd53847fc73a3c570000000000000000000000000000000000000000000000000429d069189e000090afd283d5b15af0cc55f32ed879b6b4e364cf16dd61c7c125c3abdcfe5bbc76c1ea7d56a449217e98179261720bf72d7c5fe9766e2407de8efc6be0fa889996af78a8298488eb83653785ff21b936ce9c27e44f997e65e11a10a806b28e85144e55f67548be509222b88e150fbded4b86112ef6a9a3fa5061634c10ccd26f89219311f916d4d4d069c10e5df546fcda58432bef62508e4d1e6d3fc962cc8eacffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeb0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7000004b7c87fff4044b4e74cac01bc926f8a66b5ffbcc5ab275d24215c0ed31e8cbc000033333333333333333333333333333333333333333333333333333333333380a241d03559e8bfba0485b0d7abed07712e2e479dd0ce47734c8c46e79ea99176f059ac75dcfddf5ab3c3eaa2f1b0a908f293a445b5b1aae50c94085b395aabb15fd23ae87d78f85eebbe80d089443433e09f7875fa1fe1e878ac8f02bac14d47db68178557f8b86fcc1e70033a6b23f36861c69650b2e1b1c54c3e4e38bec6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b00c24c1bac90ebf08d9ac58f77aab9761be35a4df59a1e123ce0a52a5e459d1193abac291b6c7cf32a1c1bf4e4c34ca9f40e45197022fb5eb0336b6581998a0966b981721422af5dcbf394fb82c9530a9e41372ff98c8b715b2604518bdd53c123fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00000000000000000000000000000000000000000000000000000429d06918a000008763a1dc6288781834628921decf9797a012b55a7340402df0aac23f1ec1c4010000000000000000000000000000000000000000000000000000000000000012fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb000091e6bf1af91c7b654fd2e5a39fc7b291948e66ef98428300a0f1c069bf5157675a62cebece86f10ff59982c702bab09ea6efa05c1f4638d0b3cb64bc03528e2cf835137cbb5048d30b838c22241d38f1ba1211ccddcf9238cf1c7a55613b0f2c0000136b06e70b74211247c17f81c85322358d29092d96433469e3a1a3ea7544fde48049eaff4aa6184c129d4d9b2ae30d27c85fb125fabf6622a8b91539e40bea3aa7abe8774d0b75c9f61880a5eb87e8d5e9c540d1e5575a87ee6a919c4f40000000000000000000000000000000000000000000000000000000000000001a243520fba835c81d96c5aec594af13983ec1bbc4bbb65fe3c42cbad86d2f8d0b000000000000000000000000000000000000000000000000000000000000000a61bdf8e170aeac32df600557fc9109a0e1931a89ce037f7a73f4e27014cbeb3ee2999738af6c65ef91f63f8d37d38b836cf45786877c54eca436cebcfe970103e2495cba7c4e13e87ea6fd3ecaec2767555a4b05bb3a46970b2a52e369833c229c98af5791b9eb10a9ce4f8877b29a0d3d252c26e8978fc0f06dc76e5c773e0d7d18299afb7f04306c841ad4dde10b0e85299468c5542d959cc2a9eb4a224adec971ae980c3aca7594e053e53f02f2cbb507dff5ad84d765f47e082cad37088dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000064fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000000000000000000000000000000429d06918a30000cfe3163c31cd941c4908c92e98dbae78eb610b5dc95280675541c644dcf9c8f500000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000070000c2df88ffb895bb3ee5e308a9f9b59def710f56ead713536fef962d1921952f52507d6ffcb75e4b55151ff6aed1a0b9bb6d8fcd8d5c591258860c6432d79b66deb6ca18f9955582373ef05fe8a0ea15469e2e42507df1773160264edb03b93d4afffffffffffffffffffffffffffffffffffffffffffffffffffffef2852482d1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9002028aa14e24eabf324687cff69eac9445a8b6d322afd1f749d06e2db36542f15bf0000000000000000000000000000000000000000000000000000000000030000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec64dc0896a8cd2481b4de12c4c15c61ec7269a601900ab5064de099ddc4815c21fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96880", + "dataAbiValues": { + "methodSignature": "handleAmendEpoch(uint256,uint256[],uint256[])", + "inputValues": [ + "131072", + [ + "47249851142740957875757900722779564657107273723906910256311739213982676151608", + "24766647138290460177752181234244218002669932821712329987517949466155636587242", + "0", + "107635980887742396802989946387564943771597423793872822880446020389851475951208", + "58748141700443537731924179025379299905124924268648486910397741139492126553462", + "102959964003436531771605190463160185179521415668756700512209123474929947362098", + "64849904481003809351316455932003660004683549313112719287715608903446404487559", + "101832598753169673332434200866859671573583992662842345135767087566893488744510", + "115792089237316195423570985008687907853269984665640564039457584007913128984320", + "2", + "3964541595194321251049067066727095442150914503457355275421156022122200843853", + "69196137823698655653179131081748492787753217343508675585086117321321112977069", + "115792089237316195423570985008687907853269984665640564039457584007913129639926", + "524288", + "75792963508756617716638337164822687693930529122081563495913601860663238553914", + "58300906925523261178190550226810506704237340748656034105474573547804618603677", + "34849869920871438155430600521556864444509859388103082685646642846820738089247", + "50562335537967437952552687066491099733264203586317703438897045144079049354120", + "31022094918639093592809734205946854493687731921234396095826256308342577539164", + "47682928770316848609484539286410371707483684010538998761101216800973410697381", + "12507668409590352176172458789061820918700048371081002479886390349704123617400", + "10", + "32481872328373691918491608409201337116411995929807719754470895460896910415427", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "987266774351020839026202647140160929484406452454656930109189606660181981596", + "7512461533277042537650113826310416800190431280406474926456260795113588631669", + "86400", + "37925977948056232333212671950177614183909984801269218202283041467764136260054", + "60423043696541527786411067027331108736077933111445718401854939120676383560878", + "31906615328792064267287065751203493967441657403485782729489444603549659539422", + "58142855929762780006244349247823147669055400828717759145815619594102285533672", + "101584422479822196487353742809726641621647381263703357860936186417864256633903", + "33100711601684018991909556451825954777243047261585260172245805028334775810229", + "327680", + "1340186218024493002587627141304258192746180378074543565271499814906401961", + "71446637037758358116465784240690108798175037326038801993773476812486740360874", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "432000", + "98215759039058129811069975962076516563865141423407928082078011663829313773186", + "20839387647756181674923298419552294886853857628058613012393606876825426117319", + "114021860331193221546298748801449163227736451520005563918149923632276456488023", + "300000000000000000", + "65443701353316894436567772279582990841706584775134004403299385948764787948662", + "87710687043878617200016562937082580838310086473928443054884759037111133837718", + "79367930762546646363195273083176957226771595872507422347465520372259073459476", + "35432285181576787435411052955550450505300949325786212997760353422194162954121", + "15186174566889253010204046787236418120118689199202142220826285962993569926828", + "115792089237316195423570985008687907853269984665640564039457584007913128263680", + "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "2133968207251167582431772071102515689799560696939649201928863585509853531324", + "353369412955676865916659500148583703165496779375123791624321240258523955", + "58182728069952182075105014396527452811135033226950986415304485007647280376209", + "53797578333320386010456122044156857743869580805840963593876795181230590614187", + "80228675625285898042656808560537019109829718306369783404321506803462795084109", + "32501870172339943500186166407857619651344111150644834648060840735320957304518", + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "87883164001601056595617337236338321635271327694861418666965294740904263618963", + "77649678513824341834462714929317783260475812428214921694262117336984404494694", + "83906587601195920361441906297987737596060683960919063624786619529343500796195", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "300000000000131072", + "61238269540880867255905792063103824629886144667112593231825926894695712146433", + "18", + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "65993056830217982500232177698232701243193826692204311110170855515525531916135", + "40882734288729406091300429366702778355211210171364316858691443667620666183212", + "112267363839023720090900192093569439082045663236816136381119901541587977178924", + "134018621802449300258762714130425819274618037807454356527149981490640196", + "114838877238692460901739037435708768147992899524492322670651309852230992651275", + "105944840924513804511236867160081932556494222659003216854401617204424367427392" + ], + [ + "16377133083975144612803209916890759276116079793347708892259939332490555002123", + "10", + "44209998118768791307014642136652120267704279192218906644488834105212924586814", + "102494075072658918779959176572030905228085485918607969092905532405942307979523", + "102352323603851854147303090326961438456288187821786226964274201402124301188130", + "70830575299308684007858248487084455137350147340081636707263387232100381310477", + "56581797552380621635106000276727873672203516396150582086354318630661782653662", + "91115741286620669112937454104354410989556251121248953782619196069266559797389", + "115792089237316195423570985008687907853269984665640564039457584007913129574400", + "262144", + "100", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "300000000000327680", + "94029987401702137462237430126565305540660377850025797500486713728434821515509", + "256", + "458752", + "88143645052327880294016331672884386697866318870146480968988222959112275963730", + "36406656676820602772473438963511049244974309266248500307301099349900791604958", + "82678013919905467091748735010739230611958440922307682242577676600485986516298", + "115792089237316195423570985008687907853269984665640564039457584006755722232529", + "115792089237316195423570985008687907853269984665640564039457584007913129181216", + "18393022080502958242737873783961131068118909769972148436847751681820714800575", + "196608", + "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "45620050488317513559777904066204761490045812513350707192575523630828126034977", + "115792089237316195423570985008687907853269984665640564039457584007913129207936" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 47284, + "blockTimestampDelay": 478924 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc592b97c781e37069fb1746e80fce7a05bdc0db067121ed67b8f0c5341f98343f", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "40332865490102779880692380169491232729036205025855948737372216034766219654207" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 113401 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803612336000-5693c2ca-1af1-4296-b5e4-039401f77778.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803612336000-5693c2ca-1af1-4296-b5e4-039401f77778.json new file mode 100755 index 0000000..1390a86 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803612336000-5693c2ca-1af1-4296-b5e4-039401f77778.json @@ -0,0 +1,552 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574403" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43748, + "blockTimestampDelay": 541010 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f790139ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 11833, + "blockTimestampDelay": 213928 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d7f4bab9c72ef04decea93d5f106890883b64be0e4f50aa1ceebd5a435a7fa13a0000000000000000000000001302f0402bb094e65a1c38fc8979628fa7cb7eb80000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000d2f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "57577429716414119383889913852992200380066446236494108346454295294682507223354", + { + "accountingExtension": "0x1302F0402bb094e65a1c38fC8979628FA7cb7eB8", + "bondSize": "864000", + "bondToken": "0x0000000000000000000000000000000000093A80", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639935" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30759, + "blockTimestampDelay": 56734 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff30838cd661e07d4920a4bce6f00da019a66f1a0c976d396f8827e2cc52ed8ce1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "21943445721707534311606538764242968064099548519492097564976924267444655983841", + "115792089237316195423570985008687907853269984665640564039457584007913129115648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000ffff800000000000000000000000000000000000000000000000000000000007", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "115791205813783806231406193359937536394012070923692126229978523204812483330055" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23928, + "blockTimestampDelay": 603784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c7440906eb1080127929789d55c169cd890ff51930058d460b835803e947a1382a9e3a84eb76ecf8f296e15f27686df9d7107dae93af0929c31ee8d76fd38476ee4", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "29203212251508816547276680880804676973046658682524638891611434720618890887849", + "e3a84eb76ecf8f296e15f27686df9d7107dae93af0929c31ee8d76fd38476ee4" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8633, + "blockTimestampDelay": 384652 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417afffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000e9d23751886f170e2b576c9a16ce5725aaa7d6b5a51829b582417606f258a52e", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128591360", + "105760313397677454187313767699264694345051805328600745402406216015374137730350" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace00000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000000b8000000000000000000000000000000000000000000000000000000000000000018e16328353e4335d4857f0c0272a56e894016a8e7fd5018abf59e4d63ffccc5d", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "458752", + "2944", + "1", + "64267643762154101036828179854063870619362775084021579500394794132351915707485" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 164, + "blockTimestampDelay": 328 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d34c37e1c6d066da117417045ecbb977d5fedb1a4f579c688036dfc2df96e8752a043feae6e9cd4dd5562baba0f9a2b8b88a6d24a210411d2a9ec010c887b2bbe857bd07a491da874930cf70d2603f546341bf1b41678d94212ad0d7f75f1f8c34", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "34474511333835792082501049571137601504043270057660531960180087278390018077994", + "1922183993469207343531967439441002744253338739077547349842513920358809254888", + "39685204671003151059797908428363376637491661590041500229844100997746182294580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13776, + "blockTimestampDelay": 196607 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf2150000000000000000000000000000000000000000000000000429d069189e0000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "300000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 73, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29ef15b65782cfe591a01276bbd3a4a416a4bc7c3c46d4a2a065776ceef8729dba0000000000000000000000000413cb2b8393acd243f05fe1fc92f0f33645674b0000000000000000000000000000000000000000000000000000000000030000fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b000000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000d2ba62ed8591040e27c905c9f23b93ea29ed2e248c13da4976202a1dc77c2ba8", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "108141133076887610497531349483470932814278164634546444848861358676425430965690", + { + "accountingExtension": "0x0413cb2b8393aCD243f05fe1fC92f0F33645674B", + "bondEscalationDeadline": "0", + "bondSize": "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "bondToken": "0x0000000000000000000000000000000000030000", + "disputeWindow": "95315014531250257482381499157059680862481424202393349630157942686167364021160", + "maxNumberOfEscalations": "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007913129050112" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38581, + "blockTimestampDelay": 108799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137450d770be3b639c40475b7c2d9b38d9e215fe44b7581f0c70a37d8c0a641edafd0000000000000000000000000000000000000000000000000000000000000040fffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e762000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000429d069189e0000faaa954e38a0b2b00899664d61354e2cfff2f66f0626a1fe18153ff26908fb17000000000000000000000000000000000000000000000000000000000000002245524332303a206275726e20616d6f756e7420657863656564732062616c616e6365000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "36565678129823773534549762252589227787369831080370959419522126439904133962493", + { + "accountingExtension": "0x0000000000000000000000000429d069189E0000", + "chainId": "ERC20: burn amount exceeds balance", + "epoch": "115792089237316195423570985008687907853269984665640564039457284007913129639936", + "paymentAmount": "113379606615874029916799118804079911196343283863948566571202567108031238699799" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 37714, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf850998e7a487a0396644961090095b61b3c1b308fa403cec3ee49938481a811c6", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "36456338832299820178700876510501821848611772013703942260527737361995594731974" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55799, + "blockTimestampDelay": 360605 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803616547000-7e10b2dd-f253-4d1d-b859-ec8a710b55b8.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803616547000-7e10b2dd-f253-4d1d-b859-ec8a710b55b8.json new file mode 100755 index 0000000..176f3f0 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803616547000-7e10b2dd-f253-4d1d-b859-ec8a710b55b8.json @@ -0,0 +1,741 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e57cf479b021a816743ff5b53a6f3e5c2c247b2adb9311a44237c3858abd44df0e0000000000000000000000000000000000000000000000000000000000127118", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "56518743767933985910260346386765678340564227438862784222762849925209918856974", + "1208600" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35385, + "blockTimestampDelay": 50692 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007861590032384" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 57134 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b6811b3175568497fde3c31fe069ccc7985311b0506f3b43e70969ab59ea722d2599", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "12299832254764069471447641000592064088020729744720327828938364394997925356953" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098ea6e532d597161bf414844541b5281607abc0fedcfbe19700823ca81bfeffd5da", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "75488891688353701349182521546099519030572206284453220585196006136091846366682" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13249, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff000000000000000000000000000000000000000000000000000000000009688043d2cc6bee2c75afbb0a2d8e686ed8d850d35e4220dab9eaaad8c1f2bbd315eb000040ba1702262dc3924484fe5b466a7207d688c9429f8aaeb64c1acd0d86e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "616576", + "30677409604733962472433633135176719636373390531562919397962760076773674915307", + "446728739341497667529209047101419397582060126024847855090499938302133985", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28736, + "blockTimestampDelay": 576650 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14857, + "blockTimestampDelay": 578411 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000053817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "53817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c2700db944f945348b4c6cffca09ace97414e862af57bfe67d15e8f4ba3813ede4b3d688e69cd534e15f8ccc3765fd50e2ab30d2b740b3ff6d5865213182fe783c63b4bac2923dad06e124a6e05ae7aa5ae1b3e8edff0154acd1de94e5fe6e26732", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "387963111102058097323071002434237761651493831039740349958407635767455047243", + "27775818758715135462630212585325327395456425224261459780030383525521640620998", + "26820159805776502209708934821205059577225837408551437026198979884765463865138" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25200, + "blockTimestampDelay": 27983 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc1800001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648", + "220855883097298041197912187592864814478435487109452369765200775161577471" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50518, + "blockTimestampDelay": 458752 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f000000000000000000000000000000000000000000000000000000000005d100", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "381184" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23639, + "blockTimestampDelay": 195785 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbd1599870fe02ecf9ec87ee76accd2d760e7eba60278962813ea05d348dc178e41", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "9769829584924913960676332702159746411403704490750429962740385280098947272257" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2685, + "blockTimestampDelay": 487244 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffedea0275f3411a7ad187b0108aa786a3f16bde9", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008681454588525719193607429938766044948827876015593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15207, + "blockTimestampDelay": 220921 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57e286bb06cb42cc1cd185bc3f02cfcd592fc3e9b10aa00b2c2b633d09978af7a7", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "102460752096230911141037771748726806398872347580671159824723173728064937588647" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12095, + "blockTimestampDelay": 12289 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15263, + "blockTimestampDelay": 532218 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639934" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 66, + "blockTimestampDelay": 100 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbd0000000000000000000000000000000000000000000000000000000000069780", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "432000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25275, + "blockTimestampDelay": 265204 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285ca0000000000000000000000000000000000000000000000000000000000090000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff951803e9cbc6e25eef9741c5aecc543fdfd3b7843cdd81d009791c912b1ac18ca3bc3", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "589824", + "115792089237316195423570985008687907853269984665640564039457584007913129508864", + "115792089237316195423570985008687907853269984665640564039457584007913129202048", + "28320325252170137216432823826258230770014552748113962706280014781562200144835" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 32288, + "blockTimestampDelay": 531907 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c59c2553129e7851cb256c99b06c7f8dc81f210c90a2e2611259abc401e81f07540000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "70626751067301019089441572534217019449535130321119175666564383155547736573780", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54625, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9883fe7612b6bb87b26cae4dca32375d45e122ab623e5fabce941d7b88e897fa5fffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000041076a70cffc1a4eeb895e1e3bd1eea004e1c563d9647015c78c3ec8bdf54455", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "61627455695498944603673940108566635137976242750181887122097763359817575530405", + "115792089237316195423570985008687907853269984665640564039329584007913129639936", + "29413437713895903893487278743213882333056396597315056022550118936518019335253" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 51381, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a00000000000000000000000000000000000000000000000000000000000003e5fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000050000", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "997", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "327680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18831, + "blockTimestampDelay": 48188 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cf52979d6557e7dffb91b5c3d89fc589d6d825e7304f69a52751c44508ab494c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "110889929522296307995270791263779988265523562999353831634872636959969779160259", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 196608 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c06d71e3fa7df5670060e7ae6bfb0fef56e250e6caae1d93f62f15d384dd79058", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "3093957978973023196079698570753322494102707684193970199785237023181952749656" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45163, + "blockTimestampDelay": 193409 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5543846522791a89d6fc1377bd19a2942e57d92b97cc6684453067dfb865a791d2538da6000000000000000000000000e3c48138f476eb09478b5d32fa946e61fe5f12e8", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "15592608508227480150485868850753978432760407300713696700708765193096882523558", + { + "arbitrator": "0xe3c48138F476Eb09478b5D32FA946E61fE5F12e8" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3666, + "blockTimestampDelay": 310056 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803617615000-2901a619-fff5-448f-99fe-6220b810c578.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803617615000-2901a619-fff5-448f-99fe-6220b810c578.json new file mode 100755 index 0000000..bb2601f --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803617615000-2901a619-fff5-448f-99fe-6220b810c578.json @@ -0,0 +1,849 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcc0e4d0eee56b7f10aa9aefe04c4f650af62be8b532d57f12aa7ac5b950884c3a", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "87248350062624793638699702709121271409886681841563726628967995216176035155002" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29334, + "blockTimestampDelay": 296740 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681bebfb0dc367f431af08687c084e9c844567359d9793a12e0818425b7df16682a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "86278129664477803463997658766424154744739678303000950581784606393529462581290" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3566, + "blockTimestampDelay": 274227 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38128, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9000000000000000000000000000000000000000000000000000000000004ff00bfa47f0f3034e3c5b418dac09c339f53fbdf69ff4b147e91a872420a6f7ed6e20000000000000000000000000000000000000000000000000000000000040000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "327424", + "86682393929289525193494153568452559356866521755790133919226203303415723775714", + "262144" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28049, + "blockTimestampDelay": 147436 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681000000000000000000000000000000000000000000000000000000000000000a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "10" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21572, + "blockTimestampDelay": 167216 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc87e2e521510210bb9f1efbff2cd79d7cd5675b7d503c446b0017b6bbcd5d492f", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "61463123393503677610123184398943346662098674670775488627974437033537892600111" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1005, + "blockTimestampDelay": 436171 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215564402b8b5f207f4eed188f382ae7d299d56800cfcdbfbdd380f5d111164d7f3", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "39019069361849810475124568581956515548187837436962789536769612725416477644787" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29390, + "blockTimestampDelay": 405151 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c44964af5d348042810c6713f567b2ae0a1329f9a41a31dd65689466b80ed86a98102cf683f24338dbd0d0b4e969d552adaa1cb2ba854e7981b39db6aa7a4eb4733a4406bfd9ab92f3b803843d5137445ebcd4035dd79b752232dceb1e4a553a7fc90bc23f646eb8405f9865cad125e2b67c4cb5be6b00c8cbfeb79ac596e5fee34b", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "45541126372497665840906508174782686333425760491760126897278402501345182128144", + "20337320375757040483596893633798835084481932414588544316829844888167896085306", + "30769198887980302917418981166398434808730110615619342329624446156192224018377", + "5318647182657600089902655701709793773207260177110878862668649309798760637259" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23482, + "blockTimestampDelay": 51930 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcf6cf88d9f37a86121908cb039be9cc51a5103895c84fc649276df49538afcbad", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "111635642607345537592182708073224837457339443516741764226233323948854559624109" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23896, + "blockTimestampDelay": 360604 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655000000000000000000000000000000000000000000000000000000000004839c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "295836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55339, + "blockTimestampDelay": 85204 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c58670cef9c731503eed4776ba6fad6b3696fa16be2eb18b465fbafeeaa0fe7be70000000000000000000000000000000000000000000000000000000000000064", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "60809237075164466486500268418905379284411433772615587007980463004965951929319", + "100" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38872, + "blockTimestampDelay": 360628 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8a5a8486b947649db116db64c5c45ca42e6e1d986fed7026bd9ac1d8640310d33", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "74928950149207865187656931027679893325164490827615215400216718609192626228531" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21, + "blockTimestampDelay": 232191 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff0000000000000000000000000000000000000000000000000000000000015180001d4d2f346ae4815c9e9f03f21e3deda069706413924e409fa7504059d19f8a00000000000000000000000000000000000000000000000000000000001061800000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "86400", + "51771271984981606474845360496175347553777726680427752644378601650631319434", + "1073536", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e00000000000000000000000000000000000000000000000006f05b59d3b20000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "500000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7308, + "blockTimestampDelay": 572210 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285ca0000000000000000000000000000000000000000000000000000001c00000000c55ec4bc0d08a528b0c66dda1e983ee7a47fab9c2c7be0189c7f1615408b21090c446e0f4b256cc52cd8a8e7d04a641b919117ba4e8eec18cfc1d6bbef455c1afffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96880", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "120259084288", + "89273072607119207212350079296024751198400000134903763911230695693815852507401", + "5548659387815291343462229641472196329432108891134398921647704413649710177306", + "115792089237316195423570985008687907853269984665640564039457584007913129207936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3666, + "blockTimestampDelay": 328552 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb000025f25d7faafc93fb72865fa242af64b472ba83cff86d93b0533a903d41979d49a118576f8a1093f26ae33d6729cf5cc25c7581d9765b4403dbe286498c516c51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "17163797691587697797154778947709945459459813549491742892821231886739673947465", + "72865376410486736594847893277442722029628711678849188712496784814318445227089", + "115792089237316195423570985008687907853269984665640564039457584007913129639678" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16097, + "blockTimestampDelay": 32945 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cf935db8f217ab066b096d3e73a0d7b001fc4ecd8978a23860b95e790ce003170a4eaae94e9868a2f0db87614a7dec2d16319e0ba326a536f6f1691bb8e96bf90f0b832e69b37aa7335b293d4fa58406790362547ef49f09345b753dfa24964850", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "66655581966891990089433207462395406981090073962288009560809406913154795116298", + "35582376416332259156222282743710371541531294308094913458341281816449259403535", + "5207218629929607814724254599342746391010434197465047907333283290976655657040" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 60434, + "blockTimestampDelay": 109697 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45581, + "blockTimestampDelay": 117423 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fc6539b7a2476ae67ba4b976f82611916e58f7b5d2430c83158095390cd02239e", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "89705665389500661869876865816500895748106493083156214106851103557324275590046" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41808, + "blockTimestampDelay": 450845 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2372, + "blockTimestampDelay": 234681 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50550, + "blockTimestampDelay": 229553 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9ba1fc4eba964b9a2c2032d06ec565d5292cf250b147e734e6d992d5d0bda436f600000000000000000000000000000000000000000000000000000000000697806bf391284d4660fc77fbe4592328a2f0997562e4f12cf27795f43d0b0fc3bc7a", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "73268157448823115839328750088743753530156494765398712182649313036506897856246", + "432000", + "48827820474906800904865104890106511812906050912626598573180323282500481956986" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace6d38c114215bf8f8b3ad2ed58065d5cc3089e62f5be34c18288c135f3f9724a20000000000000000000000000000000000000000000000000000000000069780fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00006d9d66ca4ec2ea144207d592952b27c55e72f77602616bdfe3178ceccfefbe99", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "49402376510960630712476074985720877101324288030739208582895764419073394812066", + "432000", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "49580204917077383946213464068067879479747000240903333733565655861027448798873" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27322, + "blockTimestampDelay": 32945 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94c9ca03", + "dataAbiValues": { + "methodSignature": "handleConfirmCouncil()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 12 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e0000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29896, + "blockTimestampDelay": 295089 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803620612000-8cf92baa-a0a3-4010-9457-96b2f6261d69.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803620612000-8cf92baa-a0a3-4010-9457-96b2f6261d69.json new file mode 100755 index 0000000..279cdbf --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803620612000-8cf92baa-a0a3-4010-9457-96b2f6261d69.json @@ -0,0 +1,862 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e57cf479b021a816743ff5b53a6f3e5c2c247b2adb9311a44237c3858abd44df0e0000000000000000000000000000000000000000000000000000000000127118", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "56518743767933985910260346386765678340564227438862784222762849925209918856974", + "1208600" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35385, + "blockTimestampDelay": 50692 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007861590032384" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 57134 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b6811b3175568497fde3c31fe069ccc7985311b0506f3b43e70969ab59ea722d2599", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "12299832254764069471447641000592064088020729744720327828938364394997925356953" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098ea6e532d597161bf414844541b5281607abc0fedcfbe19700823ca81bfeffd5da", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "75488891688353701349182521546099519030572206284453220585196006136091846366682" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13249, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff000000000000000000000000000000000000000000000000000000000009688043d2cc6bee2c75afbb0a2d8e686ed8d850d35e4220dab9eaaad8c1f2bbd315eb000040ba1702262dc3924484fe5b466a7207d688c9429f8aaeb64c1acd0d86e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "616576", + "30677409604733962472433633135176719636373390531562919397962760076773674915307", + "446728739341497667529209047101419397582060126024847855090499938302133985", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28736, + "blockTimestampDelay": 576650 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14857, + "blockTimestampDelay": 578411 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000053817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "53817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c2700db944f945348b4c6cffca09ace97414e862af57bfe67d15e8f4ba3813ede4b3d688e69cd534e15f8ccc3765fd50e2ab30d2b740b3ff6d5865213182fe783c63b4bac2923dad06e124a6e05ae7aa5ae1b3e8edff0154acd1de94e5fe6e26732", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "387963111102058097323071002434237761651493831039740349958407635767455047243", + "27775818758715135462630212585325327395456425224261459780030383525521640620998", + "26820159805776502209708934821205059577225837408551437026198979884765463865138" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25200, + "blockTimestampDelay": 27983 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc1800001fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648", + "220855883097298041197912187592864814478435487109452369765200775161577471" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50518, + "blockTimestampDelay": 458752 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f000000000000000000000000000000000000000000000000000000000005d100", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "381184" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23639, + "blockTimestampDelay": 195785 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbd1599870fe02ecf9ec87ee76accd2d760e7eba60278962813ea05d348dc178e41", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "9769829584924913960676332702159746411403704490750429962740385280098947272257" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2685, + "blockTimestampDelay": 487244 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffedea0275f3411a7ad187b0108aa786a3f16bde9", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008681454588525719193607429938766044948827876015593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15207, + "blockTimestampDelay": 220921 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57e286bb06cb42cc1cd185bc3f02cfcd592fc3e9b10aa00b2c2b633d09978af7a7", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "102460752096230911141037771748726806398872347580671159824723173728064937588647" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12095, + "blockTimestampDelay": 12289 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15263, + "blockTimestampDelay": 532218 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639934" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 66, + "blockTimestampDelay": 100 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbd0000000000000000000000000000000000000000000000000000000000069780", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "432000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25275, + "blockTimestampDelay": 265204 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285ca0000000000000000000000000000000000000000000000000000000000090000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff951803e9cbc6e25eef9741c5aecc543fdfd3b7843cdd81d009791c912b1ac18ca3bc3", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "589824", + "115792089237316195423570985008687907853269984665640564039457584007913129508864", + "115792089237316195423570985008687907853269984665640564039457584007913129202048", + "28320325252170137216432823826258230770014552748113962706280014781562200144835" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 32288, + "blockTimestampDelay": 531907 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c59c2553129e7851cb256c99b06c7f8dc81f210c90a2e2611259abc401e81f07540000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "70626751067301019089441572534217019449535130321119175666564383155547736573780", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54625, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9883fe7612b6bb87b26cae4dca32375d45e122ab623e5fabce941d7b88e897fa5fffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000041076a70cffc1a4eeb895e1e3bd1eea004e1c563d9647015c78c3ec8bdf54455", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "61627455695498944603673940108566635137976242750181887122097763359817575530405", + "115792089237316195423570985008687907853269984665640564039329584007913129639936", + "29413437713895903893487278743213882333056396597315056022550118936518019335253" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 51381, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a00000000000000000000000000000000000000000000000000000000000003e5fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000050000", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "997", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "327680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18831, + "blockTimestampDelay": 48188 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cf52979d6557e7dffb91b5c3d89fc589d6d825e7304f69a52751c44508ab494c3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "110889929522296307995270791263779988265523562999353831634872636959969779160259", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 196608 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c06d71e3fa7df5670060e7ae6bfb0fef56e250e6caae1d93f62f15d384dd79058", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "3093957978973023196079698570753322494102707684193970199785237023181952749656" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45163, + "blockTimestampDelay": 193409 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5543846522791a89d6fc1377bd19a2942e57d92b97cc6684453067dfb865a791d2538da6000000000000000000000000e3c48138f476eb09478b5d32fa946e61fe5f12e8", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "15592608508227480150485868850753978432760407300713696700708765193096882523558", + { + "arbitrator": "0xe3c48138F476Eb09478b5D32FA946E61fE5F12e8" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3666, + "blockTimestampDelay": 310056 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106acea2d5173adb93a2cd1033b5f52681bd0614b47ae4535d63b77f6c639133ca2c49000000000000000000000000000000000000000000000000000000000000000accd8e89f1509f48130de39cf5bad897268280e26e0d77bbeb894829a9094d406fef738389e245691128a28af2582e3bf7008a41611638738a61546690c37f95f", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "73651180222253959435445851094553484306349010260885383557615430474495169277001", + "10", + "92655065570978103145219371427434907985144045715846383103199450179683908637702", + "115324262789356647940193411987118065973685194399929380631474822550484470462815" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43822, + "blockTimestampDelay": 379194 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc82f34f90a1c5127f33f84ac236f164e5943f332c200323385ba846740a1f92876cf5cdc0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleSettleBondEscalation(uint256,uint256)", + "inputValues": [ + "4573160322155485468092691711528209900478228879240914282338054668139686223068", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28361, + "blockTimestampDelay": 423157 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cbfc3b0ce22d27a5161f7cb0e93bac74fec1d3119e554fbdc013a6ba1802ab50aeab9325edfd6b15693c964f3737ba9e68630d71953d76525d7cfd0f062d4ab85", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "86737509521808917159111158607442063703291470172791970792565090962547296351498", + "106168420920593622728073515457652893967459017093322482730963636595159293275013" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd35000000000000000000000000000000000000000000000000000000000000001cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "28", + "115792089237316195423570985008687907853269984665640564039457584007913129377792" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 46292, + "blockTimestampDelay": 390579 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c17157fe265ad4da14535a720baa0713c6d6be4b3fd0574f9854514a59d3351509881e", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "114955230624257586888150299074240011223672725671584890060570375544722550261790" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 44387, + "blockTimestampDelay": 414636 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803621764000-125ef6cd-6d4b-4800-ad62-0f4317b13564.json b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803621764000-125ef6cd-6d4b-4800-ad62-0f4317b13564.json new file mode 100755 index 0000000..f04a2ea --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/immutable/1731277803621764000-125ef6cd-6d4b-4800-ad62-0f4317b13564.json @@ -0,0 +1,1015 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcc0e4d0eee56b7f10aa9aefe04c4f650af62be8b532d57f12aa7ac5b950884c3a", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "87248350062624793638699702709121271409886681841563726628967995216176035155002" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29334, + "blockTimestampDelay": 296740 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681bebfb0dc367f431af08687c084e9c844567359d9793a12e0818425b7df16682a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "86278129664477803463997658766424154744739678303000950581784606393529462581290" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3566, + "blockTimestampDelay": 274227 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38128, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9000000000000000000000000000000000000000000000000000000000004ff00bfa47f0f3034e3c5b418dac09c339f53fbdf69ff4b147e91a872420a6f7ed6e20000000000000000000000000000000000000000000000000000000000040000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "327424", + "86682393929289525193494153568452559356866521755790133919226203303415723775714", + "262144" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28049, + "blockTimestampDelay": 147436 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681000000000000000000000000000000000000000000000000000000000000000a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "10" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21572, + "blockTimestampDelay": 167216 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc87e2e521510210bb9f1efbff2cd79d7cd5675b7d503c446b0017b6bbcd5d492f", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "61463123393503677610123184398943346662098674670775488627974437033537892600111" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1005, + "blockTimestampDelay": 436171 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215564402b8b5f207f4eed188f382ae7d299d56800cfcdbfbdd380f5d111164d7f3", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "39019069361849810475124568581956515548187837436962789536769612725416477644787" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29390, + "blockTimestampDelay": 405151 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c44964af5d348042810c6713f567b2ae0a1329f9a41a31dd65689466b80ed86a98102cf683f24338dbd0d0b4e969d552adaa1cb2ba854e7981b39db6aa7a4eb4733a4406bfd9ab92f3b803843d5137445ebcd4035dd79b752232dceb1e4a553a7fc90bc23f646eb8405f9865cad125e2b67c4cb5be6b00c8cbfeb79ac596e5fee34b", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "45541126372497665840906508174782686333425760491760126897278402501345182128144", + "20337320375757040483596893633798835084481932414588544316829844888167896085306", + "30769198887980302917418981166398434808730110615619342329624446156192224018377", + "5318647182657600089902655701709793773207260177110878862668649309798760637259" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23482, + "blockTimestampDelay": 51930 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcf6cf88d9f37a86121908cb039be9cc51a5103895c84fc649276df49538afcbad", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "111635642607345537592182708073224837457339443516741764226233323948854559624109" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23896, + "blockTimestampDelay": 360604 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655000000000000000000000000000000000000000000000000000000000004839c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "295836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55339, + "blockTimestampDelay": 85204 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c58670cef9c731503eed4776ba6fad6b3696fa16be2eb18b465fbafeeaa0fe7be70000000000000000000000000000000000000000000000000000000000000064", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "60809237075164466486500268418905379284411433772615587007980463004965951929319", + "100" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38872, + "blockTimestampDelay": 360628 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8a5a8486b947649db116db64c5c45ca42e6e1d986fed7026bd9ac1d8640310d33", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "74928950149207865187656931027679893325164490827615215400216718609192626228531" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21, + "blockTimestampDelay": 232191 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff0000000000000000000000000000000000000000000000000000000000015180001d4d2f346ae4815c9e9f03f21e3deda069706413924e409fa7504059d19f8a00000000000000000000000000000000000000000000000000000000001061800000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "86400", + "51771271984981606474845360496175347553777726680427752644378601650631319434", + "1073536", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e00000000000000000000000000000000000000000000000006f05b59d3b20000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "500000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7308, + "blockTimestampDelay": 572210 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285ca0000000000000000000000000000000000000000000000000000001c00000000c55ec4bc0d08a528b0c66dda1e983ee7a47fab9c2c7be0189c7f1615408b21090c446e0f4b256cc52cd8a8e7d04a641b919117ba4e8eec18cfc1d6bbef455c1afffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96880", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "120259084288", + "89273072607119207212350079296024751198400000134903763911230695693815852507401", + "5548659387815291343462229641472196329432108891134398921647704413649710177306", + "115792089237316195423570985008687907853269984665640564039457584007913129207936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3666, + "blockTimestampDelay": 328552 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb000025f25d7faafc93fb72865fa242af64b472ba83cff86d93b0533a903d41979d49a118576f8a1093f26ae33d6729cf5cc25c7581d9765b4403dbe286498c516c51fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefe", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "17163797691587697797154778947709945459459813549491742892821231886739673947465", + "72865376410486736594847893277442722029628711678849188712496784814318445227089", + "115792089237316195423570985008687907853269984665640564039457584007913129639678" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16097, + "blockTimestampDelay": 32945 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cf935db8f217ab066b096d3e73a0d7b001fc4ecd8978a23860b95e790ce003170a4eaae94e9868a2f0db87614a7dec2d16319e0ba326a536f6f1691bb8e96bf90f0b832e69b37aa7335b293d4fa58406790362547ef49f09345b753dfa24964850", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "66655581966891990089433207462395406981090073962288009560809406913154795116298", + "35582376416332259156222282743710371541531294308094913458341281816449259403535", + "5207218629929607814724254599342746391010434197465047907333283290976655657040" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 60434, + "blockTimestampDelay": 109697 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45581, + "blockTimestampDelay": 117423 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fc6539b7a2476ae67ba4b976f82611916e58f7b5d2430c83158095390cd02239e", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "89705665389500661869876865816500895748106493083156214106851103557324275590046" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41808, + "blockTimestampDelay": 450845 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2372, + "blockTimestampDelay": 234681 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50550, + "blockTimestampDelay": 229553 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9ba1fc4eba964b9a2c2032d06ec565d5292cf250b147e734e6d992d5d0bda436f600000000000000000000000000000000000000000000000000000000000697806bf391284d4660fc77fbe4592328a2f0997562e4f12cf27795f43d0b0fc3bc7a", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "73268157448823115839328750088743753530156494765398712182649313036506897856246", + "432000", + "48827820474906800904865104890106511812906050912626598573180323282500481956986" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace6d38c114215bf8f8b3ad2ed58065d5cc3089e62f5be34c18288c135f3f9724a20000000000000000000000000000000000000000000000000000000000069780fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00006d9d66ca4ec2ea144207d592952b27c55e72f77602616bdfe3178ceccfefbe99", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "49402376510960630712476074985720877101324288030739208582895764419073394812066", + "432000", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "49580204917077383946213464068067879479747000240903333733565655861027448798873" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27322, + "blockTimestampDelay": 32945 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94c9ca03", + "dataAbiValues": { + "methodSignature": "handleConfirmCouncil()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 12 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e0000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29896, + "blockTimestampDelay": 295089 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f790139efba9b2834c74d709519853c0c661cced3f6e6bb57034f06a1b09ebb79f36d9c", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "108432475220089292989352031551556088320023937241642286584901681212614704852380" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098e23efefd49377cb652b2efe8f6107693a85f268401d3f695de47b13e417a59903", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "16254881397312121307844917357848000937401516541955530653246186212852626725123" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4534, + "blockTimestampDelay": 578608 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c7461c4f89d311c5622d26ee473805d801e1e4be30bf8050ec8c525ddf1cf37acbe0ead82a3944ed45e30d3e999e0e48601607b422425d39a985ea42d26d3b6e9c4", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "44222364208250993042194123695458820220229905873588662451847890140503268109502", + "0ead82a3944ed45e30d3e999e0e48601607b422425d39a985ea42d26d3b6e9c4" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cf87ae5d14ee2351ca102989d785b4b7efe087fc5a1b60c34e0be145f7b943be8ffffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e762000000000000000000000000000000000000000000000000000000000000000d2e9c", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "61370308374700441181536886680791943808671525212080209904364978290829998407311", + "115792089237316195423570985008687907853269984665640564039457284007913129639936", + "863900" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 48892, + "blockTimestampDelay": 295089 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbdb121a3097a91b0a9dd08824bfabe574af41d35d62d9a5fec850f5c6a64dc8da6", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "80118805392577917302320307777298810080793910322434011470484002932687271398822" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6262, + "blockTimestampDelay": 355344 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf6424e9b2c6c78cd5e252239ca5f659d6a33fc535923c6c3f5fe9b5ae5c441f67c10c683fffffffffffffffffffffffffffffffffffffffffffffffffffffff422800000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleProposeResponse(uint256,uint256,uint256)", + "inputValues": [ + "20093418566925099562206972483095283711082263828977174359548316414600652310147", + "115792089237316195423570985008687907853269984665640564039457584007862168846336", + "115792089237316195423570985008687907853269984665640564039457584007913129639934" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54369, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcf2ec8f248161ff659b9a00fc126511299241c5b1d2eab9067b406b43e6e9d2cd", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "109877673198349435273933557980761836191817416087000044001744188979781359489741" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49682, + "blockTimestampDelay": 571210 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803567787000-ab0f8e03-6145-4021-98bc-bc4414e1edac.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803567787000-ab0f8e03-6145-4021-98bc-bc4414e1edac.json new file mode 100755 index 0000000..31cf38f --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803567787000-ab0f8e03-6145-4021-98bc-bc4414e1edac.json @@ -0,0 +1,80 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569568000-2b517ff1-9d51-4eb3-9295-59aef5edfe82.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569568000-2b517ff1-9d51-4eb3-9295-59aef5edfe82.json new file mode 100755 index 0000000..2b53cfb --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569568000-2b517ff1-9d51-4eb3-9295-59aef5edfe82.json @@ -0,0 +1,25 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569770000-871a08c3-b8b7-48ec-b0f3-8f40a4b63667.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569770000-871a08c3-b8b7-48ec-b0f3-8f40a4b63667.json new file mode 100755 index 0000000..4c27a18 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803569770000-871a08c3-b8b7-48ec-b0f3-8f40a4b63667.json @@ -0,0 +1,101 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570237000-58712d84-87f6-4a52-b17f-0a1efd24dc9a.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570237000-58712d84-87f6-4a52-b17f-0a1efd24dc9a.json new file mode 100755 index 0000000..4dbda46 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570237000-58712d84-87f6-4a52-b17f-0a1efd24dc9a.json @@ -0,0 +1,104 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570989000-b61b8318-0b73-4814-96b9-ffd4a7bf2c0a.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570989000-b61b8318-0b73-4814-96b9-ffd4a7bf2c0a.json new file mode 100755 index 0000000..27966e6 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803570989000-b61b8318-0b73-4814-96b9-ffd4a7bf2c0a.json @@ -0,0 +1,103 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803571997000-b4c04c00-0029-44d8-a7a6-df5aa8196990.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803571997000-b4c04c00-0029-44d8-a7a6-df5aa8196990.json new file mode 100755 index 0000000..8986a50 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803571997000-b4c04c00-0029-44d8-a7a6-df5aa8196990.json @@ -0,0 +1,133 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803572903000-2dfcb57a-f822-4ba8-935c-c6ef623952cf.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803572903000-2dfcb57a-f822-4ba8-935c-c6ef623952cf.json new file mode 100755 index 0000000..7e992ae --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803572903000-2dfcb57a-f822-4ba8-935c-c6ef623952cf.json @@ -0,0 +1,49 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573530000-e8877634-86e5-4563-9155-7f538767b281.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573530000-e8877634-86e5-4563-9155-7f538767b281.json new file mode 100755 index 0000000..cc9be3f --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573530000-e8877634-86e5-4563-9155-7f538767b281.json @@ -0,0 +1,103 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000010e0ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e0568fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd401884f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f165f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "4320", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "8fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd40188", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f1", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57f70d7a9f8f7dc147f3c07846c57ff55a159156e04b1aef93f09a50411ed01cac", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "111745088926706135766942953021093517459235404528421949148968020375462747315372" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41182, + "blockTimestampDelay": 251336 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573604000-9ce76d8d-3fdf-4be0-a718-67783ed4f0bd.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573604000-9ce76d8d-3fdf-4be0-a718-67783ed4f0bd.json new file mode 100755 index 0000000..785c842 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573604000-9ce76d8d-3fdf-4be0-a718-67783ed4f0bd.json @@ -0,0 +1,150 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573691000-2f49b3b2-64e5-483d-8360-df43563d2ae4.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573691000-2f49b3b2-64e5-483d-8360-df43563d2ae4.json new file mode 100755 index 0000000..d6a1853 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803573691000-2f49b3b2-64e5-483d-8360-df43563d2ae4.json @@ -0,0 +1,149 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803574933000-69edad03-8dfd-4c82-a029-e43ba88f8c78.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803574933000-69edad03-8dfd-4c82-a029-e43ba88f8c78.json new file mode 100755 index 0000000..89f698d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803574933000-69edad03-8dfd-4c82-a029-e43ba88f8c78.json @@ -0,0 +1,154 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575378000-7c923095-534b-4a11-b54e-2d2ef4e1b46b.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575378000-7c923095-534b-4a11-b54e-2d2ef4e1b46b.json new file mode 100755 index 0000000..2224489 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575378000-7c923095-534b-4a11-b54e-2d2ef4e1b46b.json @@ -0,0 +1,156 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8000000000000000000000000000000000000000000000853a0d2313c00000000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "39321600000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23050, + "blockTimestampDelay": 360593 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575499000-b159dfaa-e3ec-46e5-98f1-23e5b2c960d2.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575499000-b159dfaa-e3ec-46e5-98f1-23e5b2c960d2.json new file mode 100755 index 0000000..db74108 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575499000-b159dfaa-e3ec-46e5-98f1-23e5b2c960d2.json @@ -0,0 +1,103 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575632000-cdb80630-09f6-4557-a579-1f22c6aad840.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575632000-cdb80630-09f6-4557-a579-1f22c6aad840.json new file mode 100755 index 0000000..93a7895 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803575632000-cdb80630-09f6-4557-a579-1f22c6aad840.json @@ -0,0 +1,158 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576501000-457a1374-bc7f-42db-8cbe-f5b69bd2aa06.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576501000-457a1374-bc7f-42db-8cbe-f5b69bd2aa06.json new file mode 100755 index 0000000..1c2a6ff --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576501000-457a1374-bc7f-42db-8cbe-f5b69bd2aa06.json @@ -0,0 +1,127 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000010e0ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e0568fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd401884f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f165f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "4320", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "8fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd40188", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f1", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57f70d7a9f8f7dc147f3c07846c57ff55a159156e04b1aef93f09a50411ed01cac", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "111745088926706135766942953021093517459235404528421949148968020375462747315372" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41182, + "blockTimestampDelay": 251336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5f758e7d4f100dcc2db3c85b9df5a8759d5abbd1697a1a04ec3af1471f220359a0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "111878356186062714847010348548460913142200960060168223055923222451354708489626", + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36881, + "blockTimestampDelay": 523741 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576958000-f157d325-29b7-4f9f-bdb5-7e0eba3fcb5c.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576958000-f157d325-29b7-4f9f-bdb5-7e0eba3fcb5c.json new file mode 100755 index 0000000..d28e8d2 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803576958000-f157d325-29b7-4f9f-bdb5-7e0eba3fcb5c.json @@ -0,0 +1,172 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577371000-f0c7f0bf-41b6-4568-9911-e2d805265711.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577371000-f0c7f0bf-41b6-4568-9911-e2d805265711.json new file mode 100755 index 0000000..1df958b --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577371000-f0c7f0bf-41b6-4568-9911-e2d805265711.json @@ -0,0 +1,174 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6faba969b1150e65eb039223322d37083c0f930e9f96e767cfaf888c1440b89042a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffbe15000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "76627612529152310655938988775485703136714009850335653768166292952282670580391", + "115792089237316195423570985008687907853269984665640564039457584007630014119936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 274647 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577541000-25d5bdb7-8d18-498d-a97d-d95a6fb8c9a8.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577541000-25d5bdb7-8d18-498d-a97d-d95a6fb8c9a8.json new file mode 100755 index 0000000..e528c6b --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577541000-25d5bdb7-8d18-498d-a97d-d95a6fb8c9a8.json @@ -0,0 +1,119 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577723000-1f6f9435-92ad-4363-9f0c-1e54059c5dc4.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577723000-1f6f9435-92ad-4363-9f0c-1e54059c5dc4.json new file mode 100755 index 0000000..09b99dc --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577723000-1f6f9435-92ad-4363-9f0c-1e54059c5dc4.json @@ -0,0 +1,209 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577914000-83d29a38-d185-4da1-bf7c-796c32549172.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577914000-83d29a38-d185-4da1-bf7c-796c32549172.json new file mode 100755 index 0000000..2366f1d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803577914000-83d29a38-d185-4da1-bf7c-796c32549172.json @@ -0,0 +1,187 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803579664000-a886f310-136b-4d5e-b32b-512a0240982f.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803579664000-a886f310-136b-4d5e-b32b-512a0240982f.json new file mode 100755 index 0000000..c798781 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803579664000-a886f310-136b-4d5e-b32b-512a0240982f.json @@ -0,0 +1,181 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8000000000000000000000000000000000000000000000853a0d2313c00000000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "39321600000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23050, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfb0e3106162bbf50b7b4f4127a44fc6dee30686640d85ab8a97c7a387e688d09200000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "80008248687813878652618995284154503941697939794158322754224777983398987223186", + "86400", + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17066, + "blockTimestampDelay": 86400 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580224000-4d28fe91-5746-4c39-a8f0-ed56ca160a14.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580224000-4d28fe91-5746-4c39-a8f0-ed56ca160a14.json new file mode 100755 index 0000000..e65dea9 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580224000-4d28fe91-5746-4c39-a8f0-ed56ca160a14.json @@ -0,0 +1,128 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c573a80b81e8d97661fbf779db19fd00793e39f3b40bca612ee408ab75ff1c6439cf047509736e50626b1084ee93f4294000f73db102927cdc7fc34de68c384da900e6c", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913130244736", + "83279546779206125286340055887058748934887896216240549764862301155730028032071", + "36452200662221151095065482565067302916782446267779931962683895890335455252076" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41956, + "blockTimestampDelay": 475112 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580455000-b20b34f9-5e1b-4d0f-8572-f21362b0e345.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580455000-b20b34f9-5e1b-4d0f-8572-f21362b0e345.json new file mode 100755 index 0000000..aaa0b08 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803580455000-b20b34f9-5e1b-4d0f-8572-f21362b0e345.json @@ -0,0 +1,173 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000010e0ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e0568fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd401884f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f165f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "4320", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "8fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd40188", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f1", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57f70d7a9f8f7dc147f3c07846c57ff55a159156e04b1aef93f09a50411ed01cac", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "111745088926706135766942953021093517459235404528421949148968020375462747315372" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41182, + "blockTimestampDelay": 251336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5f758e7d4f100dcc2db3c85b9df5a8759d5abbd1697a1a04ec3af1471f220359a0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "111878356186062714847010348548460913142200960060168223055923222451354708489626", + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36881, + "blockTimestampDelay": 523741 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc18", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6610, + "blockTimestampDelay": 345959 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43871, + "blockTimestampDelay": 505590 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581400000-be76a133-7392-4cf1-904a-fb9e7463d9ff.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581400000-be76a133-7392-4cf1-904a-fb9e7463d9ff.json new file mode 100755 index 0000000..a106ee1 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581400000-be76a133-7392-4cf1-904a-fb9e7463d9ff.json @@ -0,0 +1,221 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581661000-78189ca7-7948-4439-966b-4447023b9d74.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581661000-78189ca7-7948-4439-966b-4447023b9d74.json new file mode 100755 index 0000000..605ac2d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803581661000-78189ca7-7948-4439-966b-4447023b9d74.json @@ -0,0 +1,199 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6faba969b1150e65eb039223322d37083c0f930e9f96e767cfaf888c1440b89042a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffbe15000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "76627612529152310655938988775485703136714009850335653768166292952282670580391", + "115792089237316195423570985008687907853269984665640564039457584007630014119936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 274647 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007c3160c01450d95568fbc7e3fe876965aa411c1bf13d7be2baabf28cedd3012f", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56174036476597730143689219709059961134239333858317208755745576773703517274415" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 404026 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582447000-6e98b3d8-7a3c-44ab-886c-20808a9bbc0a.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582447000-6e98b3d8-7a3c-44ab-886c-20808a9bbc0a.json new file mode 100755 index 0000000..432be13 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582447000-6e98b3d8-7a3c-44ab-886c-20808a9bbc0a.json @@ -0,0 +1,145 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582764000-cfe80931-2a26-43cf-ac19-9333113edb1b.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582764000-cfe80931-2a26-43cf-ac19-9333113edb1b.json new file mode 100755 index 0000000..90932a8 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803582764000-cfe80931-2a26-43cf-ac19-9333113edb1b.json @@ -0,0 +1,260 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803583775000-dca8d182-bcd4-4450-b3b8-ab15f9ec2b20.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803583775000-dca8d182-bcd4-4450-b3b8-ab15f9ec2b20.json new file mode 100755 index 0000000..7b1b84f --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803583775000-dca8d182-bcd4-4450-b3b8-ab15f9ec2b20.json @@ -0,0 +1,232 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcc0e4d0eee56b7f10aa9aefe04c4f650af62be8b532d57f12aa7ac5b950884c3a", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "87248350062624793638699702709121271409886681841563726628967995216176035155002" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29334, + "blockTimestampDelay": 296740 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584460000-0934697b-6b99-4564-bc59-fcfff205e7a8.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584460000-0934697b-6b99-4564-bc59-fcfff205e7a8.json new file mode 100755 index 0000000..3f0e44d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584460000-0934697b-6b99-4564-bc59-fcfff205e7a8.json @@ -0,0 +1,199 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c573a80b81e8d97661fbf779db19fd00793e39f3b40bca612ee408ab75ff1c6439cf047509736e50626b1084ee93f4294000f73db102927cdc7fc34de68c384da900e6c", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913130244736", + "83279546779206125286340055887058748934887896216240549764862301155730028032071", + "36452200662221151095065482565067302916782446267779931962683895890335455252076" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41956, + "blockTimestampDelay": 475112 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efaab191ad64d8fba3d052ab8ef37a088ba9faf5a1be696a47310de3441525ef897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3aaae444ec5312714f03b0566d2b40e5d34f58f068cabf3625fc0d7cfe3db912", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "77389853507359787864882669351213362161735184606551274462865365263877886900375", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "26536084675173092165947634556752584404681954305155475174391110206140234709266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18699, + "blockTimestampDelay": 240561 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcd2d78e343e1607b919341e2fe248544a49a0028fbd677a717f6a437862ddbc00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "95366551777850189910113500849756061153261920552639335948298155642211775921152" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16776, + "blockTimestampDelay": 165634 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087cd27e66c1a6365fdd2d452e5a6a582655000c0811d209ba0499f4483caf4b2da", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "92794631311208978202520326772644046682922248037671286389514014341863059010266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6256, + "blockTimestampDelay": 488143 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584811000-6fd137e0-c5b3-46bf-b7cc-1b9ada70f8cb.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584811000-6fd137e0-c5b3-46bf-b7cc-1b9ada70f8cb.json new file mode 100755 index 0000000..ed0e482 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803584811000-6fd137e0-c5b3-46bf-b7cc-1b9ada70f8cb.json @@ -0,0 +1,244 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574403" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43748, + "blockTimestampDelay": 541010 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803585754000-86cd1183-238f-46f1-89fb-e31c381aa9cd.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803585754000-86cd1183-238f-46f1-89fb-e31c381aa9cd.json new file mode 100755 index 0000000..d68e201 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803585754000-86cd1183-238f-46f1-89fb-e31c381aa9cd.json @@ -0,0 +1,224 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000010e0ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e0568fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd401884f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f165f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "4320", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "8fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd40188", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f1", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57f70d7a9f8f7dc147f3c07846c57ff55a159156e04b1aef93f09a50411ed01cac", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "111745088926706135766942953021093517459235404528421949148968020375462747315372" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41182, + "blockTimestampDelay": 251336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5f758e7d4f100dcc2db3c85b9df5a8759d5abbd1697a1a04ec3af1471f220359a0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "111878356186062714847010348548460913142200960060168223055923222451354708489626", + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36881, + "blockTimestampDelay": 523741 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc18", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6610, + "blockTimestampDelay": 345959 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43871, + "blockTimestampDelay": 505590 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffdb16000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6a23f9b5b11f6aa4692c684f075c04d172abcb68f78eb66c92efe082b6a5d503c", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007754584948736", + "115792089237316195423570985008687907853269984665640564039457584007913129639930", + "115792089237316195423570985008687907853269984665640564039457584007913129639926", + "73387065061500873488441831200362672861865918134039727439380329949185011699772" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3063, + "blockTimestampDelay": 142231 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a000000000000000000000000000000000000000000000000000000000000000afffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000050000", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "10", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "327680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30742, + "blockTimestampDelay": 327371 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803586882000-dac7fc11-4da0-43b6-a704-b5d5e0f01355.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803586882000-dac7fc11-4da0-43b6-a704-b5d5e0f01355.json new file mode 100755 index 0000000..5d44fc3 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803586882000-dac7fc11-4da0-43b6-a704-b5d5e0f01355.json @@ -0,0 +1,289 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408986d1481eea494dad550c07436bc6bf24fda1699ae18ac8e867c2bc2cbb811f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000148bd2b35a0e0ff5f58651fe93524e321532b27500000000000000000000000000000000000000000000000000000000001274fe000000000000000000000000000000000000000000000000000000000000001419d972fb93584a547a564eb672065531206d2c71000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "0", + { + "accountingExtension": "0x148bd2b35a0e0ff5f58651fe93524E321532b275", + "chainId": "\u0019\ufffdr\ufffd\ufffdXJTzVN\ufffdr\u0006U1 m,q", + "epoch": "62205062171946186530711375116649708949236787489916806320076639634871891493151", + "paymentAmount": "1209598" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57406, + "blockTimestampDelay": 508192 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587294000-bdb9aaa4-0806-4b34-a670-488774d109df.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587294000-bdb9aaa4-0806-4b34-a670-488774d109df.json new file mode 100755 index 0000000..816b319 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587294000-bdb9aaa4-0806-4b34-a670-488774d109df.json @@ -0,0 +1,194 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587717000-df75f9a7-1493-4f85-933b-41e16a40a9aa.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587717000-df75f9a7-1493-4f85-933b-41e16a40a9aa.json new file mode 100755 index 0000000..7c595c7 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803587717000-df75f9a7-1493-4f85-933b-41e16a40a9aa.json @@ -0,0 +1,277 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8000000000000000000000000000000000000000000000853a0d2313c00000000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "39321600000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23050, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfb0e3106162bbf50b7b4f4127a44fc6dee30686640d85ab8a97c7a387e688d09200000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "80008248687813878652618995284154503941697939794158322754224777983398987223186", + "86400", + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17066, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cce21db24dd246f08ad02e64e7a8e8742fa9607e8fdf81425d16e85c70f3de5d85907be10f550a4ab3f84480cf0ea723b2a74da20322f8a7c02918a70cdb15ac9", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "93236265237587594263022487768855356786420509345912517467786824227481808922072", + "40269523242363880299786798295795090179015741572111778996238876869560403843785" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 101426 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f998e4550a0de435d19cec4771f09fda88c2b7664624260171a192d839c6e2a65", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "69455236510673350336024647478873143438234265695463592178397393693034284984933" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35869, + "blockTimestampDelay": 315170 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55790, + "blockTimestampDelay": 111616 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x55438465815bedc734908418031caab89516e183218d7f0edf8e3c493ab40a8fcacc98210000000000000000000000001260c0c92cc0a0b1b5b54cb0501ed367353befeb", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "58510781634585462798122964402259920591361435129587016659431711127985600632865", + { + "arbitrator": "0x1260c0c92cc0A0b1B5b54cb0501eD367353befeB" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25042, + "blockTimestampDelay": 70452 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803588141000-9a69c5d6-6e9c-4112-b48d-c967ce827264.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803588141000-9a69c5d6-6e9c-4112-b48d-c967ce827264.json new file mode 100755 index 0000000..eeb8fad --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803588141000-9a69c5d6-6e9c-4112-b48d-c967ce827264.json @@ -0,0 +1,267 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574403" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43748, + "blockTimestampDelay": 541010 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f790139ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 11833, + "blockTimestampDelay": 213928 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590022000-aa14cc9b-89e7-4ad3-bd27-cebd20d762fd.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590022000-aa14cc9b-89e7-4ad3-bd27-cebd20d762fd.json new file mode 100755 index 0000000..e6bf6c5 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590022000-aa14cc9b-89e7-4ad3-bd27-cebd20d762fd.json @@ -0,0 +1,255 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcc0e4d0eee56b7f10aa9aefe04c4f650af62be8b532d57f12aa7ac5b950884c3a", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "87248350062624793638699702709121271409886681841563726628967995216176035155002" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29334, + "blockTimestampDelay": 296740 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681bebfb0dc367f431af08687c084e9c844567359d9793a12e0818425b7df16682a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "86278129664477803463997658766424154744739678303000950581784606393529462581290" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3566, + "blockTimestampDelay": 274227 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590829000-913a5283-6ee7-4539-b536-25e88067c71c.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590829000-913a5283-6ee7-4539-b536-25e88067c71c.json new file mode 100755 index 0000000..2084ce2 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803590829000-913a5283-6ee7-4539-b536-25e88067c71c.json @@ -0,0 +1,302 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106000000000000000000000000000000000000000000007ff72b2c19616ab00000e645df196666f5e4e940c577b9670b086db2c746878e45aae0dbee6c63a0e6a35bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000004ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a0171bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a9925e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "604300000000000000000000", + "104155407395839188072220307346509508179171066778602859964492537460856123877027", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "0", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "71bc7dd16f0e277b94f2e46980d7e8e6c3c5187bf68be378e2d72cd0e70293ef", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "465e592f6d3f1d78fbc619b878d95794035829bd9b1285f3eb021d72f8e45638", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "25e5ea45a807ae40eb654d82982bacb30bb1da6060d308d0b63004f4e1926b0c", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7eeaaa73118d1da2c1db95511517ab896f87445c2331029aecdc7f065f634e6b46", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "106142364743506859045918558596602602319943607038906547683486076996802461985606" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2001, + "blockTimestampDelay": 455470 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c573a80b81e8d97661fbf779db19fd00793e39f3b40bca612ee408ab75ff1c6439cf047509736e50626b1084ee93f4294000f73db102927cdc7fc34de68c384da900e6c", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913130244736", + "83279546779206125286340055887058748934887896216240549764862301155730028032071", + "36452200662221151095065482565067302916782446267779931962683895890335455252076" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41956, + "blockTimestampDelay": 475112 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efaab191ad64d8fba3d052ab8ef37a088ba9faf5a1be696a47310de3441525ef897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3aaae444ec5312714f03b0566d2b40e5d34f58f068cabf3625fc0d7cfe3db912", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "77389853507359787864882669351213362161735184606551274462865365263877886900375", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "26536084675173092165947634556752584404681954305155475174391110206140234709266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18699, + "blockTimestampDelay": 240561 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcd2d78e343e1607b919341e2fe248544a49a0028fbd677a717f6a437862ddbc00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "95366551777850189910113500849756061153261920552639335948298155642211775921152" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16776, + "blockTimestampDelay": 165634 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087cd27e66c1a6365fdd2d452e5a6a582655000c0811d209ba0499f4483caf4b2da", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "92794631311208978202520326772644046682922248037671286389514014341863059010266" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6256, + "blockTimestampDelay": 488143 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9128a1b5b9d7d3061f14bea63c8830170dadc5f154b01425336f91cc6d8611588ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "8385644986530251641334144830118419649455771804161689778824132977763480049032", + "115792089237316195423570985008687907853269984665640564039457584007913129639680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35699, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e30000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41252, + "blockTimestampDelay": 375602 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285caff44fb6a2363fac767b088aff222c3143f1ed041c9b3e47d6474ee4922e1979fec9d178675775c3aa5161a5a209a68597466d991483528cc71c8d6ac533d0955a137b7e6f635f28c37dc46d14755f62f1ce7b659dc1873b04e1744e54dc225b665dad307139d75a132cdb60e373e4b35bba44673f5ee3d0bfbf1ac491c3d0e75", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115461657188952309751477762153544746327107707569543270374831352475679717431199", + "107023389619990543669223297468939824753654796115418022982959364890624175966549", + "72920814456766912229072746410044959713398794893085675262607692768311068730806", + "46070226826296101107756227560930518318774961046515756120293728876851585945205" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 39447, + "blockTimestampDelay": 175903 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d37645351a8f36eba3b366024eafac86b09ad5a52e0d3cf42eb52112344ab3206000000000000000000000000d12fb9f7a711eb0caf6aac68aeaf04277804b39e000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000003200000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00000b2104824bc90dc4bcf1e407a769278e1c443fdba6cf324b44962e4fea636424", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "25054466425052560783839884851311066245042877293899029878022208182382616064518", + { + "accountingExtension": "0xd12fb9f7A711Eb0caF6aaC68AEaF04277804B39e", + "bondSize": "52428800", + "bondToken": "0x000000000000000000000000000000000000000A", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "disputeWindow": "5033778407313201451107747851099848118306043382601391308246767880599192691748" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26656, + "blockTimestampDelay": 604799 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803591721000-aa3d9573-1529-4050-b0e3-d3a2c82060ad.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803591721000-aa3d9573-1529-4050-b0e3-d3a2c82060ad.json new file mode 100755 index 0000000..edb4731 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803591721000-aa3d9573-1529-4050-b0e3-d3a2c82060ad.json @@ -0,0 +1,275 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000010e0ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e0568fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd401884f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f165f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "4320", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "8fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd40188", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f1", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57f70d7a9f8f7dc147f3c07846c57ff55a159156e04b1aef93f09a50411ed01cac", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "111745088926706135766942953021093517459235404528421949148968020375462747315372" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41182, + "blockTimestampDelay": 251336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5f758e7d4f100dcc2db3c85b9df5a8759d5abbd1697a1a04ec3af1471f220359a0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "111878356186062714847010348548460913142200960060168223055923222451354708489626", + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36881, + "blockTimestampDelay": 523741 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc18", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6610, + "blockTimestampDelay": 345959 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43871, + "blockTimestampDelay": 505590 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffdb16000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6a23f9b5b11f6aa4692c684f075c04d172abcb68f78eb66c92efe082b6a5d503c", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007754584948736", + "115792089237316195423570985008687907853269984665640564039457584007913129639930", + "115792089237316195423570985008687907853269984665640564039457584007913129639926", + "73387065061500873488441831200362672861865918134039727439380329949185011699772" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3063, + "blockTimestampDelay": 142231 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a000000000000000000000000000000000000000000000000000000000000000afffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000050000", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "10", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "327680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30742, + "blockTimestampDelay": 327371 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106acedde5aa2b18247560fc1884f651a16aa87d39e393fba6b34aabbf8a91cb385dfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000843cd2add879d57e8f0aed34ab13caad0caf471b1135b4b168d69edad56713fd3584b63683c5725b9668691d6e5ef4449bd9293600a6bb52896061ae72902454", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "100366921973435276086896168354134063395714770959453851558374627032108927311356", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "59812760890479040346002793760866213267959709503641590677485959242158816302077", + "24207062375013236297905391945117914944555470909794312387449976114680249197652" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 256720 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d3e1ce6a1ddae133deb1d439cee384b8f5f1fc4f3fd0c36441f5efed119f24e24900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069780", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "102135093816581220269834099028023316090001883482696692672153861645213823722057", + "0", + "432000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54088, + "blockTimestampDelay": 60993 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803592555000-4f7eeec0-56e3-48d7-b30c-79fd53ad3971.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803592555000-4f7eeec0-56e3-48d7-b30c-79fd53ad3971.json new file mode 100755 index 0000000..f55a668 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803592555000-4f7eeec0-56e3-48d7-b30c-79fd53ad3971.json @@ -0,0 +1,314 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408986d1481eea494dad550c07436bc6bf24fda1699ae18ac8e867c2bc2cbb811f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000148bd2b35a0e0ff5f58651fe93524e321532b27500000000000000000000000000000000000000000000000000000000001274fe000000000000000000000000000000000000000000000000000000000000001419d972fb93584a547a564eb672065531206d2c71000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "0", + { + "accountingExtension": "0x148bd2b35a0e0ff5f58651fe93524E321532b275", + "chainId": "\u0019\ufffdr\ufffd\ufffdXJTzVN\ufffdr\u0006U1 m,q", + "epoch": "62205062171946186530711375116649708949236787489916806320076639634871891493151", + "paymentAmount": "1209598" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57406, + "blockTimestampDelay": 508192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9cc0000000000000000000000000000000000000000000000000000000000000000235c58e45e6b448123df4ec75c527147b56e207c4815f37193cfafc12fe9143343aa8e00e44758769fcba79ddc533615c240383088eacc520788ca11f978270a", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "0", + "15994113140863775377512613840889015859198326455210825118094249343807524508723", + "30606304928112969978587259490316563804100123622315096384733063005977978611466" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14222, + "blockTimestampDelay": 506677 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803595622000-8d816111-c114-4b60-9a27-9562e7740699.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803595622000-8d816111-c114-4b60-9a27-9562e7740699.json new file mode 100755 index 0000000..e503da6 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803595622000-8d816111-c114-4b60-9a27-9562e7740699.json @@ -0,0 +1,327 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcc0e4d0eee56b7f10aa9aefe04c4f650af62be8b532d57f12aa7ac5b950884c3a", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "87248350062624793638699702709121271409886681841563726628967995216176035155002" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29334, + "blockTimestampDelay": 296740 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681bebfb0dc367f431af08687c084e9c844567359d9793a12e0818425b7df16682a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "86278129664477803463997658766424154744739678303000950581784606393529462581290" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3566, + "blockTimestampDelay": 274227 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38128, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9000000000000000000000000000000000000000000000000000000000004ff00bfa47f0f3034e3c5b418dac09c339f53fbdf69ff4b147e91a872420a6f7ed6e20000000000000000000000000000000000000000000000000000000000040000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "327424", + "86682393929289525193494153568452559356866521755790133919226203303415723775714", + "262144" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28049, + "blockTimestampDelay": 147436 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681000000000000000000000000000000000000000000000000000000000000000a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "10" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21572, + "blockTimestampDelay": 167216 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803597300000-642c65dc-71fa-4e6a-a148-f2dc8dbd48fd.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803597300000-642c65dc-71fa-4e6a-a148-f2dc8dbd48fd.json new file mode 100755 index 0000000..851e27d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803597300000-642c65dc-71fa-4e6a-a148-f2dc8dbd48fd.json @@ -0,0 +1,449 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000010e0ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a0000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e0568fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd401884f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f165f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "4320", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "8fcad889d076bcc6f0b5c84a4f6f334b74f944740b9f88a51f2895e76dd40188", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "abbc2a768fea28edd1d653edcbaa5cace525564c5330b62b6ed63452f3b221f1", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57f70d7a9f8f7dc147f3c07846c57ff55a159156e04b1aef93f09a50411ed01cac", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "111745088926706135766942953021093517459235404528421949148968020375462747315372" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41182, + "blockTimestampDelay": 251336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5f758e7d4f100dcc2db3c85b9df5a8759d5abbd1697a1a04ec3af1471f220359a0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "111878356186062714847010348548460913142200960060168223055923222451354708489626", + "645326474426547203313410069153905908525362434349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36881, + "blockTimestampDelay": 523741 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fc18", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129114648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6610, + "blockTimestampDelay": 345959 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43871, + "blockTimestampDelay": 505590 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffdb16000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6a23f9b5b11f6aa4692c684f075c04d172abcb68f78eb66c92efe082b6a5d503c", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007754584948736", + "115792089237316195423570985008687907853269984665640564039457584007913129639930", + "115792089237316195423570985008687907853269984665640564039457584007913129639926", + "73387065061500873488441831200362672861865918134039727439380329949185011699772" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3063, + "blockTimestampDelay": 142231 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a000000000000000000000000000000000000000000000000000000000000000afffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000050000", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "10", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "327680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30742, + "blockTimestampDelay": 327371 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106acedde5aa2b18247560fc1884f651a16aa87d39e393fba6b34aabbf8a91cb385dfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000843cd2add879d57e8f0aed34ab13caad0caf471b1135b4b168d69edad56713fd3584b63683c5725b9668691d6e5ef4449bd9293600a6bb52896061ae72902454", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "100366921973435276086896168354134063395714770959453851558374627032108927311356", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "59812760890479040346002793760866213267959709503641590677485959242158816302077", + "24207062375013236297905391945117914944555470909794312387449976114680249197652" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 256720 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d3e1ce6a1ddae133deb1d439cee384b8f5f1fc4f3fd0c36441f5efed119f24e24900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069780", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "102135093816581220269834099028023316090001883482696692672153861645213823722057", + "0", + "432000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54088, + "blockTimestampDelay": 60993 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f291ec0602b5c739f9738efe0bde4ca76ba494249d121556e799bbad7dc9a0214ac00000000000000000000000077ce8638a76f158cfa43742a7f21929ac8169c3c000000000000000000000000a08534f616b19b6082e9ce685e382798a347252e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000300000000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd515ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed0bb42504ab1d2fcf8e234d7d9a79b5766efe1d758290dae5e11c063dbbb14a531", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "13909283830598735565998559648493088494620572641148929697427872120853391086764", + { + "accountingExtension": "0x77CE8638a76f158cFA43742A7f21929ac8169C3C", + "bondEscalationDeadline": "645326474426547203313410069153905908525362435349", + "bondSize": "2", + "bondToken": "0xA08534f616b19b6082E9ce685E382798a347252e", + "disputeWindow": "84699668744817055731063389426064727133389651057449241071743005766536647714097", + "maxNumberOfEscalations": "196608", + "tyingBuffer": "115792089237316195423570985008042581378843437462327153970303678099387767205584" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49450, + "blockTimestampDelay": 499595 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57ffffcccccccccccccccccccccccccccccccccccccccccccccccccda1f67b6b53", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115791735867903239746705068349187759269566819168861188915665959687588398459731" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 186, + "blockTimestampDelay": 50159 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000051361b53804bb017fc35228eb622ebb20c303d99c341631bb01645b525e7b621", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "51361b53804bb017fc35228eb622ebb20c303d99c341631bb01645b525e7b621" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 256, + "blockTimestampDelay": 448826 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a5565579828f0ddc4a050d8f5f122a91d6b8c9d500a874223d262c5d48d32c4b3ecae9", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "54960532120402474800798995585759036389486552453926935697297472107042154924777" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25939, + "blockTimestampDelay": 360525 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a570000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 19488, + "blockTimestampDelay": 147049 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e586d14dd089c6fe1d2572155eee2a525feeae1f4c0ecb91e1a612f162ec3583b4f1156467ea6a8c0338667ffedaddcf4137cf467747b19e5311216f7091a749ee", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "60979729803343632787050147183220966217514607539790862047603897794404042507188", + "109045193273123638554538842844369038784499304185614563586658579653420359567854" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13776, + "blockTimestampDelay": 51933 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf6424e9b246da0c4ed7c52c6ed248463cdf2d45ab01cd349e3a5ca837e1caa750a7df073fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000054166ccfd9b1ba2138f6992ca376d6d98294647dfd371a4e977342beaabbff3b", + "dataAbiValues": { + "methodSignature": "handleProposeResponse(uint256,uint256,uint256)", + "inputValues": [ + "16476958467633623909421142727437546795556354559550203566377601934832405704819", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "38033900908659794527437240204354666486003018258831101524347263218449313955643" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 44438, + "blockTimestampDelay": 97125 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803598316000-078046e8-41b1-4d52-9ec7-cba3101036d7.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803598316000-078046e8-41b1-4d52-9ec7-cba3101036d7.json new file mode 100755 index 0000000..0db540f --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803598316000-078046e8-41b1-4d52-9ec7-cba3101036d7.json @@ -0,0 +1,401 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000000000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "604800", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8000000000000000000000000000000000000000000000853a0d2313c00000000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "39321600000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23050, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfb0e3106162bbf50b7b4f4127a44fc6dee30686640d85ab8a97c7a387e688d09200000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "80008248687813878652618995284154503941697939794158322754224777983398987223186", + "86400", + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17066, + "blockTimestampDelay": 86400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc0106a6cce21db24dd246f08ad02e64e7a8e8742fa9607e8fdf81425d16e85c70f3de5d85907be10f550a4ab3f84480cf0ea723b2a74da20322f8a7c02918a70cdb15ac9", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,uint256)", + "inputValues": [ + "93236265237587594263022487768855356786420509345912517467786824227481808922072", + "40269523242363880299786798295795090179015741572111778996238876869560403843785" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 101426 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f998e4550a0de435d19cec4771f09fda88c2b7664624260171a192d839c6e2a65", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "69455236510673350336024647478873143438234265695463592178397393693034284984933" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35869, + "blockTimestampDelay": 315170 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55790, + "blockTimestampDelay": 111616 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x55438465815bedc734908418031caab89516e183218d7f0edf8e3c493ab40a8fcacc98210000000000000000000000001260c0c92cc0a0b1b5b54cb0501ed367353befeb", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "58510781634585462798122964402259920591361435129587016659431711127985600632865", + { + "arbitrator": "0x1260c0c92cc0A0b1B5b54cb0501eD367353befeB" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25042, + "blockTimestampDelay": 70452 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25184, + "blockTimestampDelay": 168977 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6fabc80cc1410f822f39c5490f53cdc96dd08eb43974e7995e4657ae6b6bf548e7f2871b07795e307166d3b23beb0529cf4a4051c8b01210b5127b57c6be3cac11f1", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "90485105672505321392083992946066544751897224405196443707030040081777413384178", + "61109991013787236767457822530506378720905044490242359531817392410759292260849" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41797, + "blockTimestampDelay": 101425 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90000000000000000000000000000ca826f8feadcf20b2c0d50019199cea2b62c4cc700000000000000000000000075f502741def771b94c656bf8b5b7b7f148a930e00000000000000000000000000000000000000000000000006f05b59d3b20003f8dd5e39a09165ac6f78d6e4e38c07ee1b85cd9c0c109e3875dd38c411542ff4f3b3ccb415be6bb6735532f53ea67d407e49e0d5d7b99fe0de0f5c49f9da3fad", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129181184", + { + "accountingExtension": "0xCA826F8feAdcF20b2c0d50019199ceA2B62C4cC7", + "bondSize": "500000000000000003", + "bondToken": "0x75f502741def771B94c656BF8b5b7b7F148a930e", + "deadline": "112564709967749425184314086071684882232174773517983829235624129600201071800308", + "disputeWindow": "110229700641664101210984642912501714027284836539036269317787492668732763422637" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38892, + "blockTimestampDelay": 395331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b00", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128430336" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 4 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc82f34f9fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0000", + "dataAbiValues": { + "methodSignature": "handleSettleBondEscalation(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "115792089237316195423570985008687907853269984665640564039457584007913129312256" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 113161 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803599309000-e006588c-7192-4449-bd09-0abc99a17369.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803599309000-e006588c-7192-4449-bd09-0abc99a17369.json new file mode 100755 index 0000000..cff5b46 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803599309000-e006588c-7192-4449-bd09-0abc99a17369.json @@ -0,0 +1,385 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6b0d264b5add160d5053aa476132c22d6540d3605ad8dfb850790b1ba996569b", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48420708108177856443123222644862532857390746786695606854692354379525674915483" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 59698, + "blockTimestampDelay": 331757 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd3500000000000000000000000000000000000000000000000000000000000000124ab950c09e2414c3ec444389b5281e1bdfda8ecfec5392240af8d376f3781e4f", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "18", + "33798574834817402171861624718400176195923458571787846279113220864863863578191" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 41059, + "blockTimestampDelay": 386818 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 2290, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f700000000000000000000000000000000000000000000000014d1120d7b160000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0100ffffe666666666666666666666666666666666666666666666666666666666670000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "1500000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246976", + "115791912552609717585138026678937833561418401917250876477561771847293000377959", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35958, + "blockTimestampDelay": 189815 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556550000000000000000000000000000000000000000000000000000000000093a80", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "604800" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 120766 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf60285cafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb00001f6163d95156c50021d434e3914437a6419fd074db58aba632a1165e1049633a3bf295102083f98484e4163605f3f088673969b3a53bced8eb97b90d6679470f0000000000000000000000000000000000000000000000000000000000000014", + "dataAbiValues": { + "methodSignature": "handleBondWithSender(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "14193771603127510897806160380156132720630156725507671248204049821265402880826", + "27115063851078188957254873925429362151386502274781693755807630999965205612303", + "20" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14998, + "blockTimestampDelay": 528331 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129638936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23876, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c4493b1bb599e967df2247a0bde0e15c19a16d95520dbb9eb811b647dd1c5a50d970bda0d1adb4d017dcf6513d613392f361bfe0847acfbe5bbfd267240bef7125cd61ebaebab2bac3aa4819e2caf8f85c718565871747241e292cc36db91888e520d873b789d8f47c6606b2d5358f69133b1dd4937cee526c90ac095190af102de2", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "26735416302702836720504774004574936090245153519362370366870156849631651223920", + "85771271060700958624081931951489906403580871476691194667860842730768850560461", + "44290761310036599938494988979380191776366734083697389368196279735913800066336", + "97904029442377240838501909618781928147909909174040210570358457032104622435810" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54628, + "blockTimestampDelay": 362209 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e57cf479b021a816743ff5b53a6f3e5c2c247b2adb9311a44237c3858abd44df0e0000000000000000000000000000000000000000000000000000000000127118", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "56518743767933985910260346386765678340564227438862784222762849925209918856974", + "1208600" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 35385, + "blockTimestampDelay": 50692 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffff400000000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007861590032384" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 57134 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b6811b3175568497fde3c31fe069ccc7985311b0506f3b43e70969ab59ea722d2599", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "12299832254764069471447641000592064088020729744720327828938364394997925356953" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098ea6e532d597161bf414844541b5281607abc0fedcfbe19700823ca81bfeffd5da", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "75488891688353701349182521546099519030572206284453220585196006136091846366682" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 13249, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff000000000000000000000000000000000000000000000000000000000009688043d2cc6bee2c75afbb0a2d8e686ed8d850d35e4220dab9eaaad8c1f2bbd315eb000040ba1702262dc3924484fe5b466a7207d688c9429f8aaeb64c1acd0d86e1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "616576", + "30677409604733962472433633135176719636373390531562919397962760076773674915307", + "446728739341497667529209047101419397582060126024847855090499938302133985", + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28736, + "blockTimestampDelay": 576650 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14857, + "blockTimestampDelay": 578411 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000053817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "53817ae4082823f7b7ef4f21ea8eaf2d55883b146199ee5cd9707c39a3f025ab" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c2700db944f945348b4c6cffca09ace97414e862af57bfe67d15e8f4ba3813ede4b3d688e69cd534e15f8ccc3765fd50e2ab30d2b740b3ff6d5865213182fe783c63b4bac2923dad06e124a6e05ae7aa5ae1b3e8edff0154acd1de94e5fe6e26732", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "387963111102058097323071002434237761651493831039740349958407635767455047243", + "27775818758715135462630212585325327395456425224261459780030383525521640620998", + "26820159805776502209708934821205059577225837408551437026198979884765463865138" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25200, + "blockTimestampDelay": 27983 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803600377000-22ecd0b6-4fd9-4521-9067-46171675f011.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803600377000-22ecd0b6-4fd9-4521-9067-46171675f011.json new file mode 100755 index 0000000..a0ee61d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803600377000-22ecd0b6-4fd9-4521-9067-46171675f011.json @@ -0,0 +1,718 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6faba969b1150e65eb039223322d37083c0f930e9f96e767cfaf888c1440b89042a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffbe15000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "76627612529152310655938988775485703136714009850335653768166292952282670580391", + "115792089237316195423570985008687907853269984665640564039457584007630014119936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 274647 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007c3160c01450d95568fbc7e3fe876965aa411c1bf13d7be2baabf28cedd3012f", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56174036476597730143689219709059961134239333858317208755745576773703517274415" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 404026 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c0000000000000000000000000000000000000000000000000000000000000120", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "288" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28898, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e0000000000000000000000000000000000000000000000000000000000000100", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "256" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 10120, + "blockTimestampDelay": 442746 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f77477db96404997c322ba9a11ba66d9f58fa471415b5c82afcf1965a16b52aa310000000000000000000000000000000000000000000000000000000000060000a3d04e821fd24d173d46c5c6591bac6f9d3ee4250e38f6752d158a2114dae86a7312ea15e2dc75c19cc06e815ad4c43b0e39987ce5ac5a5bac39cbb127f734e6", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "52680060769579736990081276342150508425883578818293859365287572298297987213873", + "393216", + "74095040352905635550053635482030730013005988265241047193937642446333545212010", + "52049396432936944477776417116733628414171704893437425841548460736384299644134" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 360369 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fb7ab9b804f5e3b07b64589457afe860d64ca8a1102a99dc3b01e9042b84b54c8", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "83076455368730213982012688072579720945989878255995701383969604691644153287880" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3912, + "blockTimestampDelay": 284189 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b820000000000000000000000000000000000000000000000000000000000000000ce675a74f87f83662332b39024ab66f66d3ad8159fb92d1081e73d8747ac44a2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000f99ab80a56afb5cf2d406681086184fa568b2c59b23b9eed0fb97babbdd70dcb987572aba5f9d1eb2bdfd7db4a60daa53ab31e663abe9ea14abc72f369d5dae3d49d00025d7681398c1ac8e5b18d32589a9d3aee941f68217de08b573fb0ef22270657897cfb0e6dff27bde358d9cd33988862a59eafeb150f97e1fb0bd5db1eb09668549dc88efb456b69b806d30443b7484266af42ae24fadce2ada2bf2e00ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed300000000000000000000000000000000000000000000000000000000000100006558973ea0cf6ef065af511cdd91dcf8ebf51e410d0e710b8482f875357b01e5a82a9a69bb78fc7065db036b90eebef2590e8a9797d50a66dfb4ab86433720e10000000000000000000000000000000000000000000000000000000000002700fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000010000688ad2bfdd1982f027350b11d5a66e4eb674020afc643610b6411864c705684cbaab39a71efe2422fd2229cf398d057b9b06ccfbe74bc3a4994ba9deed6f93052af9415df05e3b4e4bb3efd2328b1fac61e86adbbb1f32d9fe4d9fa96ef608ab9d48454c637331b80fc8bdfe0b16c68d224ae00eca2bc8b6b5b82eeb5dbb05bdffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3aaa89e9ec9968c5d9717eac26037a4e7abb9cc9d43af24edb06275ca7126a4c8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d0f6000000000000000000000000000000000000000000000000000000000009000056db5811b60eafc5a06420c40941879ca1aae8ba576dbb8f9dd9cbe1e4e187fb14c4c80ff0fa9624d2a9e63be6e238aa088864d7cd2780d36bc6dee000c42d1b000000000000000000000000000000000000000000000000000000000003f48058825231460c027d950a84d667bec6ad5f4731e0cfaef9f9b65d7008ad39ff50fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000000000000000000000000000000000000000000000000000000000000029f87ffe759d510e1c1d646f2c46946d2e09cce6ece48d285eecbab28b6da0aaafbe4233335f0868c51a18ff4b577aba2300ff0e1110fe6ebcf65aab5b22a0cd7af45a3243de6773b2ac820589df08ee53500a017476ffbb1bc4ceb09189a3a8688430464e8052902c1bf8131a3b65b1b8579578c0674f6b54e6508ebe3e773f92f62a3923b7d048bd00e06c64c9764f411dd42925c5a3bc087d2acf2dd45670afee5922c58e2ab2a48008017cf695319fc8f68540c785800cac4fb40071265bc6c57dd1da3996638b1d193cb3f0de7290b528e8c2553b44fdb00bd2f7afeb507f780ecfa7e55b67e34060e5a3ab3fc7c2fd6270fb027a69d0e3430e553adf6819c8dbcc8fe9ee062b2c79b12ff5516725f8025598c75085e7022536add4c3462e067f6eb57330f4a2635836735eb4e0053c2a02ad8f30b1ebb63d99a2cd2153db645c350fe8e5c04c29094fa388abef6a8faa96395cb0ff0901d9a9031f7631b22558fb38048fa6c225997c825a3070205c6bcc28d8335499c58531230e56b3a4aec270fc970dd1c77c0c5296114545b189f9c61f42ccea793f3b2f3b6c3b46fd6fb449fc87916235c006bf56db0c5c21f31410623781ece548911499cc23d8ac091676bc100d89c7174c55fa0bd83529b7e4cd0d2fb4476413f61972f0f860f6c403befbb5f69d0e304161de4e70ca3042a1d04835a72006a53c3175c5109baf4182d0da9a3e83b98e43af1ad858e630be26febe27f2c8a4f67eec52f53b0d005a92a11a1dd559351c3b253a1d1a70c23193b67441c058e70e67ac3f8ac4aee50ed009392925b73b400df2177c6a10fe1f591984b99794e9156c3bd0b4a2ed7517c12532c97966b24ef7deb1cf9e6cf37ab8f578cfd25cc9f82f16474fe7e1bde4298cc60088e914f35d7d5a66ef30363aca7be4e251f53e2f64b81e00b44a4f3ed31e5f1f4a517d25b06946975a9d79df88cf56c616ae4c81922660d533aa9317d842f948b3d2a5cab98f377cd1b719e1be52bfb774c70bd5ed589e3a4bff539f55e90e58abc8536ecc396cd34b566e938f0f4864fe1d6ff24fb8e3e3ab1b4c42b42c06700cd46a831b567bbdea115be603b7703579c8280ed0e5d4f20a9e510271e5bb61a194d5b0b205124c05d8991782e8e73158b0fd60717823b82eb7b4dd90cf778f8607913cad2914c4dfe829100903d1830199c1fbf569d6e37e2adb5d073c66fd3991eb8187063de6745dcedadabd41f6a70c7b2bc8e61d100de94b032f6d262a2e7a314c8a07740f33d9c56d018c1e78418ac315f32e91eed3eacbcded8e609c83aef09642cbfb3b717abe19c73fd5e49e008e320b3ee4ccaed6c353284dc811b9981746d05d363d35325d6f5e61340a544bf9b32b7b6cec1644b91e0b92085ff64c8d92b30f5ad1033570b6077b8bc2bb7a44a70045644d7bccb31cd1d59dc43541430d346d2a743381036d2f2e2a7a59e07c0c65de024350786615d3e7aa2c597a5d7e035e9d109e65d7d4badc94bc4bd2e55e3bc724b748e74a0fcacb73a2a9ee52f36347a5ae6072f300d6fd2f62bf08605016a6931767f353ac73babce9625b51569ab81df833bee00d3ff2bbb3badef2878a170d7d7109f33ab0f46bc96f4fc89ca727c7d8bc4282604b5bf3bbf0eea2bab4f7798601d86277e09f88645c1d56a4cae35b59d720e8b57f7e4abc5ea43a53526265c5cc4dedc5b72f127134d3d97a31a652f905f82ee74953598bf2a05f52dd89152ca9400523884d909d0469c6a966a2d841f4f01b74e98660ea5a28534174638ba83bf16343fcc653aaed6743963ad798004516fca1ba790701142e7b44788e2b9a4c6744", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "0", + "93359056366519978384575301215212766084552195127475241400321367131381031519394", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "112899263945265618091091185689767054075036928377626216345331905228274830609867", + "68959065517949274316588826283101587750558165013430347817640346533866916666083", + "96167718952585367175045237006581483249627268288674080939511722496406722768674", + "17651406335742926396690394648438989354403684618877496125906122976087978138398", + "79872808473243763044716704952744950461935635665535412421360192734135943376384", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "65536", + "45840124100760761585173752354748948632868900822901326367871013022630665716197", + "76063831858184420518861268628451249077285698597102935859033978034718219116769", + "9984", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "65536", + "47285815686966272144121693505188799597744533049049783177959832040536684193868", + "84432718589681428792934245815119003114976466487051385221334973405702499832581", + "19437535705728302099767088929537200823274258212636994203273729259332963797163", + "71140808496164046925239908329887697304458696034799907436633500076327881606589", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "77191109322862123514795600886680155988643876662484090273820952307332291142856", + "115792089237316195423570985008687907853269984665640564039457584007913128775926", + "589824", + "39286452316517865283766389032392547299789935223147165990478078739011264940027", + "9393939775408484523215953034946785494006122941999182174070733730995117501723", + "259200", + "40033788065363256588949523368348146912228695325379481069044606228254426791760", + "115792089237316195423570985008687907853269984665640564039457584007913129639930" + ], + [ + "f87ffe759d510e1c1d646f2c46946d2e09cce6ece48d285eecbab28b6da0aaaf", + "be4233335f0868c51a18ff4b577aba2300ff0e1110fe6ebcf65aab5b22a0cd7a", + "f45a3243de6773b2ac820589df08ee53500a017476ffbb1bc4ceb09189a3a868", + "8430464e8052902c1bf8131a3b65b1b8579578c0674f6b54e6508ebe3e773f92", + "f62a3923b7d048bd00e06c64c9764f411dd42925c5a3bc087d2acf2dd45670af", + "ee5922c58e2ab2a48008017cf695319fc8f68540c785800cac4fb40071265bc6", + "c57dd1da3996638b1d193cb3f0de7290b528e8c2553b44fdb00bd2f7afeb507f", + "780ecfa7e55b67e34060e5a3ab3fc7c2fd6270fb027a69d0e3430e553adf6819", + "c8dbcc8fe9ee062b2c79b12ff5516725f8025598c75085e7022536add4c3462e", + "067f6eb57330f4a2635836735eb4e0053c2a02ad8f30b1ebb63d99a2cd2153db", + "645c350fe8e5c04c29094fa388abef6a8faa96395cb0ff0901d9a9031f7631b2", + "2558fb38048fa6c225997c825a3070205c6bcc28d8335499c58531230e56b3a4", + "aec270fc970dd1c77c0c5296114545b189f9c61f42ccea793f3b2f3b6c3b46fd", + "6fb449fc87916235c006bf56db0c5c21f31410623781ece548911499cc23d8ac", + "091676bc100d89c7174c55fa0bd83529b7e4cd0d2fb4476413f61972f0f860f6", + "c403befbb5f69d0e304161de4e70ca3042a1d04835a72006a53c3175c5109baf", + "4182d0da9a3e83b98e43af1ad858e630be26febe27f2c8a4f67eec52f53b0d00", + "5a92a11a1dd559351c3b253a1d1a70c23193b67441c058e70e67ac3f8ac4aee5", + "0ed009392925b73b400df2177c6a10fe1f591984b99794e9156c3bd0b4a2ed75", + "17c12532c97966b24ef7deb1cf9e6cf37ab8f578cfd25cc9f82f16474fe7e1bd", + "e4298cc60088e914f35d7d5a66ef30363aca7be4e251f53e2f64b81e00b44a4f", + "3ed31e5f1f4a517d25b06946975a9d79df88cf56c616ae4c81922660d533aa93", + "17d842f948b3d2a5cab98f377cd1b719e1be52bfb774c70bd5ed589e3a4bff53", + "9f55e90e58abc8536ecc396cd34b566e938f0f4864fe1d6ff24fb8e3e3ab1b4c", + "42b42c06700cd46a831b567bbdea115be603b7703579c8280ed0e5d4f20a9e51", + "0271e5bb61a194d5b0b205124c05d8991782e8e73158b0fd60717823b82eb7b4", + "dd90cf778f8607913cad2914c4dfe829100903d1830199c1fbf569d6e37e2adb", + "5d073c66fd3991eb8187063de6745dcedadabd41f6a70c7b2bc8e61d100de94b", + "032f6d262a2e7a314c8a07740f33d9c56d018c1e78418ac315f32e91eed3eacb", + "cded8e609c83aef09642cbfb3b717abe19c73fd5e49e008e320b3ee4ccaed6c3", + "53284dc811b9981746d05d363d35325d6f5e61340a544bf9b32b7b6cec1644b9", + "1e0b92085ff64c8d92b30f5ad1033570b6077b8bc2bb7a44a70045644d7bccb3", + "1cd1d59dc43541430d346d2a743381036d2f2e2a7a59e07c0c65de0243507866", + "15d3e7aa2c597a5d7e035e9d109e65d7d4badc94bc4bd2e55e3bc724b748e74a", + "0fcacb73a2a9ee52f36347a5ae6072f300d6fd2f62bf08605016a6931767f353", + "ac73babce9625b51569ab81df833bee00d3ff2bbb3badef2878a170d7d7109f3", + "3ab0f46bc96f4fc89ca727c7d8bc4282604b5bf3bbf0eea2bab4f7798601d862", + "77e09f88645c1d56a4cae35b59d720e8b57f7e4abc5ea43a53526265c5cc4ded", + "c5b72f127134d3d97a31a652f905f82ee74953598bf2a05f52dd89152ca94005", + "23884d909d0469c6a966a2d841f4f01b74e98660ea5a28534174638ba83bf163", + "43fcc653aaed6743963ad798004516fca1ba790701142e7b44788e2b9a4c6744" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18813, + "blockTimestampDelay": 166386 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa21e47192f11d3f380576fd394ec9e1b4eb90a89bceb9b651bba78bf6ab564d9dfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4d00002c95da414ee489142bbc6e001fef7a12692a3b9d1210170c80e8d07cec96b7c5", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "15329948992898956970077422041464151575333773433396765238718102692294303305117", + "115792089237316195423570985008687907853269984665640564039457084007913129574400", + "20166531891724206848272694213144022190042376042953875838430089970096862050245" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7764, + "blockTimestampDelay": 145528 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15165, + "blockTimestampDelay": 79666 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94c9ca03", + "dataAbiValues": { + "methodSignature": "handleConfirmCouncil()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 12967 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fb9725d6fa85600a910792fa1036f0fc5f7aeee3d8a3c5f020c4eee7ab3acd4d2", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "83879942425981193648324846942207323156479086214801606686020480705403632276690" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 34946, + "blockTimestampDelay": 577539 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9ccfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4dff000000000000000000000000000000000000000000000000000000000000015180106377bcc6e3833de20fde0dec86034d72977efc56ce65d621eec9aef2e6254e", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639680", + "86400", + "7412749833975990795345248015108177440376656993723510144021351295583332476238" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16720, + "blockTimestampDelay": 129266 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace485fa72019613288a4d464af2e38b993bd6f4e91917334b0d1a52c61978ac8a8d2d39b6fe2ce149b4c141eb36a6107fd82a5e7526b6b0b9060ad19f590c521250000000000000000000000000000000000000000000000000000000000069780341dd0fd9f3ef23b5f0565845080e00f95f62e8508ba20febb8b8b6308593a55", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "32735529026180125829021357241527250244118779294171178089592553115267256469672", + "95359575720277367758421281161102555105495114724495679053042926100061433962789", + "432000", + "23572949092085613514975120988405477088071192393031085611716095677121225636437" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40389, + "blockTimestampDelay": 599734 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c5d04a79d586d6e202ac0bf3b7e68f4375a1303a65babaf4944016b6481419266", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "42073319140166927053960887268496944931506674334749535415241953198096253031014" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53112, + "blockTimestampDelay": 602139 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x40605c3faf2cf332d4be6aa3f13f683b2f3927dcfd17bd3f54a714dce4631f08661b5a3e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000001b71a14cc5c581000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008f83e5e1824c2e7448d4275eb1478eab6171c49a682fbaca44925028ba6b634ac3e77046f1673cfe53d1613ee88d823fd8aad7fdbe164cb637dfd93231185710000000000000000000000000000000000000000000000000000000000090000fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00009f6eee7e10961fd4bdef3767d64c40c41041a44c6addeb15c424f8d94e48bc0f0000000000000000000000000000000000000000000000000de0b6b3a7640000ca36abf2deffed0c5066b5dff652794584689a6c7e705862ae7f597d1feb13e000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000012700f8cec1bca23ec15d783db7ef8f8cd2b323c5e0d231dab89cdd395bab8f65bac2c3edd48e36942610f12c56fdc9357fb10b3a3e19be3a4066f231966c6406cf5effffffffffffffffffffffffffffffffffffffffffffc87d253162700000000093df552fbae09922d5e1344f074adbf47a846017eb175b4402261497333a2055a4d33262e07685ce10e34f6961b25194b96689b2a080e5978b2503a001cff5246a2026be7cf65c6125395dd3bc1eb0c4f1cb378693a5f9b0d7b6653b198dafb7dfd2097d05560b48c451fde495c0ce47901168cca4573e1d273864cea467a8554643a7c00f45a9c007353f2f8ca155cafb190aa7ee8bc474573d7373c863ab3700000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00007c26e68c22654056c9c7702aad1aa4eb1e874e2c5a7a20dcd3ccc3235bfaca46000000000000000000000000000000000000000000000000000000460000000071ecfe0fc25f5a80cc385509ba80f4ffb79779b42f787513c5d5695172cacf5bd11c1220171fc7f914eff9884727a5769f2b8e2d87e0c22f70fc2eedec98f47971cfcf2f40fd975cf40b591f12bcad2627a1d305e669ab648a6d1d6e9e8ba228db79eb5fdad89f08678f0421eebe41120e329edf9435dd8993b8f86fa6a5e606b92565b5ec953a8bdc7dcfadf6dc773c57ec40957931aff64bf580bd469d73f5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff900000b23ad6af11c884d96e499df75402570d05d525bf13bffdd005aba9c2f4d4d1e0000000000000012725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2100000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000030000088ea18fb122584b1efa4d9e532c2d7376b9f0c47ff2eadf136d21989711216eb9716cdd484bb8bbe02ab9174b86bd7b509bd2eeb30877a23d529a1a43c1292a0000000000000000000000000000000000000000000000000000000000000020256038ae865306af96b60f1ff7f5f081cf29f9d852b575755ccb4accb34c440effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00f1e89b7d2ae0d60246f6b9863d6666883f2d35880bb617df8c197ea6a6f3bac319717d397a1e43d1ec8630e471a8adeb41f8ffa88fe8815a4248d755c19e6c2b00000000000000000000000000000000000000000000000000000000000000c47e910dd1a6977f98a111add8eb5444304438c90e3a7966b0e784c222e1e04f360000000000000000000000000000000000000000000000000000000000070000f3657bb93d92c779a7b3185266b8f8f8dab51c3837de27303ce3ed22b7c8232a6a906f04eb8e4039b614701bfea32b7ba4a2f3552a2c30f4c306ab2f2ed00e61fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000f2aeddbdc99b983797d26060078418723a7fc368f920516f8db6a0f8da37726c31373ee7f75e203fd4190399cec9ec1168f34323e93b89896930b25dd042c4ca5227a0cf23b80943a5950a8a918993cbb07a34c40b95fba67d521e49532ec56e00000000000000000000000000000000000000000000000000000000000d2f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9649800000000000000000000000000000000000000000000000000000000001fa400ea8aafc25424af88048ec96fd9ff8565e5e76a86744505329081bc2f1c426e797f666785d36b7006166b3640a4320dffa47ca2708b45eeef576d547c61209b9fffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3000000000000000000000000000000000000000000000000000003824430f69e028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000004dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800004ba0f6427e3508d8bd04b36abd26f824e48305823859cb7b5564c67168d0017b4085526fc18f9177aff8ce39103da1f9971495b564928a93c75f38b11297ab7bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000000000000000000000000697802f6423a89ba203deca11a1e637c14b3cd81945e8ddefaf89925c08901762555895622042fb9be61a1c172f8bc46ed4e946fc0edec8916bd330f619d53d9159ccffffffffffffffc282c7449873c3e7a76b006cac63d2bf0026054e2b6cd0ed9191f4242dbc893426f41de7e20a15eaa229434100aa190cbfdfa26c71bebabe061b711e33c5a2626a21641421aae78ad10302c3e4b68e0084326ce1a976ecd9d2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff7942924169a2701b17adb49021260199c82feb263dae20dfb1f06f6d7b0e281b9bdd61fd2775ce3ef9f0b5c0c01dc8a2a4816283877ed45116d47568bec7b63dd5138de5014c131120b22f2a6188fc709abab26e2493c64a0a47d68524e454a808e9d68a4d0000000000000000000000000000000000000000000000000000000000000012eb70cfbcdc4cd24d362862bb16dd8354de5c369027336f4ddbea81c90fc5ff5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008fffe0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007d78952ef91d5b6abe516ac64db444e3979fd26dca0df8c7995a2c199d038c3e3551972009bb26ba918f6da4305f8f74758d7998388287d7bc569f242db37bed53737eadc62c4e9c12e0eaeb0d3f291ca3d6a6736abe2fff500d5995b84a6dd600763808282f4724a7f5980b0fde1691a8ec464e20d6161bf3806d15f485866c000000000000000000000000000000000000000000000000000000000001000200000000000000000000000000000000000000000000000000000000000000033fcea3b0db78d1875e79b1354a2407d71f81529bd4b8d9e53648947656a923690000000000000000000000000000000000000000000000000000000000007500ffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000032700502bd6e947dd8d5f04af7e204d2f8fda4599e101b7d8f26a70b66100ed50c83cef29af6267e45562d930be4d012c9990e9f3ec312fd1fb1250d2f24941337e02fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c58070c1359629497822e1f9451d29df743ae330181bc9e2b10c549974773e8036dca08ff75ee457748096c6c1f4780e2f123afe03bd9044610c1f6bf171c8ea1918a9933ec858ef5823627e1952d0f024adf07d4fb760118799b53f281c64e36fca909fc08433a01c2f761ec47689e0e4afcf53553aa23a009cdf034acc2cc28ce800000000000000000000000000000000000000000000000006f05b59d3a90000000000000000000000000000000000000000000000000000000000000000000024888890ead6a3fa688eea15c1fb851c542c73063e36b474f733e77cc1e3dffe3770af29006695416eb06d59ee21b71f351d172b306175ce5098c4dafc5ceacdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b000000000000000000000000000000000000000000000000000000000000000064332aa14fde53e1900e8b9e18e67ebbe584887125c7c87df20e55e7d2ccc596958ccb77c59cf7412d78e3502ca4ed593c96d7889d3aa7e2f35af20e45fb3f30b0447a0bce98c36c3f1464d030d94e1faa4cf1282192d66dc267208a05c20417fdeb27ec9d62517b40aa048bad057b792ea4b5570140d61938df4e248e9f41d224d826ba696696ef5c2f84a5bfa22440b058ead7b89ee23930cf5834e89ffae31d40baaf432a54fdc1149e61a4c275de983dc6e109fdee048e1db1fceec55312c62876f266ef80348000d46774154ffe91a79395f18511d8e4dbf5524576e1ecef96da03c301964363dd537b3d196514d16428949f3e7677accc3a4cb7b53eabffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecd3262809b86aae0f6733691180bc3d4d28aa37b824be525776cf70cf5dfa1249fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0000fa64731c4bac6932747b966f080ff4b69feea1ff4b5a34c11a499e46984b98adb45ac57345fa90da513dba9ee818309393b78a691fea587e6709af7e00c33ee2c8eaac2a564ea749c4f885df3f46c1b11bde75aa4c71483d327a89c0a107aea5ffffffffffffffffffffffffffffffffffffffffffffffffffffffe450800000a93976c1ea3eab6d00cc0755bddd65e8d9fdc33a21c2244a148af731cccb4ab7fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c51f4809b16aa6fd5ddc427ff517fc492793a03d0d1053e9c7d646d348b1f6c819ec8bcffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22f37f35b3bc1a21297e47c7ffb746b9f0392c95c41bffc375673d43fbb56fb3db54fce3d5d19c16c9ebb75ad9e08868f532e1c3cef92c2c9815209447828bae8fb8dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600008000000000000000000000000000000000000000000000000000000000008000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001005069ce6545751092cbc2eff7f8a196368084a8d6575e723789a0a8550ab98fff", + "dataAbiValues": { + "methodSignature": "handleAmendEpoch(uint256,uint256[],uint256[])", + "inputValues": [ + "79234168267686009005088260694588693407234102385107460922602254484253129267774", + [ + "129600000000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "4057111305782275886571448300120152255027125755784863430760218107684929844788", + "77908175901692034127470361839288991262578550865601348498225359157260673189233", + "589824", + "115792089237316195423570985008687907853269984665640564039456584007913129639936", + "72113742116195548480853306837104241632999023982387119790698814234496216906767", + "1000000000000000000", + "91463791901734848429633524612431015587287462192412548639048745950508510548960", + "524288", + "75520", + "112538894066595722788315856528659501863855106263622911153991922780102220692162", + "88621215232375177742539071784431089817151237292122275030738334703048582418270", + "115792089237316195423570985008687907853269984665640563777313584007913129639936", + "66884583572423189936125899179878352008538100011771012405602043541671303061589", + "74552459651354750430174029843320369767657394133388412894085302753361367397668", + "48001968457810261411432527469825735958997723895879576113893948479301808402359", + "101236868603944277764776604371323779743105874173437918010876456299226217293909", + "31781435923726815159842015427101927434769505588009900572451953949977556003639", + "35", + "0", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "56155524592461176289193537074028160427039803039682165510113327887820869257798", + "300647710720", + "51530081265637896148265832957451117723923258375630496683253581940896230461275", + "94582982168304262223100306942296660289078495773942778513563741163193733018745", + "51478519167773814506353660548389024638097489026918201160503420063837816857128", + "99271926829207145105184311505618387825667524547266582325691221310367712273926", + "83743952310347544629337739241152284883214803800419070987633781806314039374837", + "115792089237316195423570985008687907853269984665640564039457584007913129181184", + "5038477866947515063779293836246906523661855668185302495208724210093145279774", + "115792089237316195423570985008687907853269984665640564039457", + "393216", + "196608", + "3870510126953272661260638544693110069552065422800236658373254995620968604014", + "83878282060591541165988934124893916466315011269761026377742732144499153250602", + "32", + "16905583918771723668203985488747601465300647358530698843745608175382153675790", + "115792089237316195423570985008687907853269984665640564039457584007913129639680", + "109418378172788479097976565158528463610367949333061091923009466030448721509059", + "11508339200772475836942584238735894096008812481055785241282078323770931440683", + "196", + "57247707120759955627861231083084937748463087404077160699542249942796596170550", + "458752", + "110091327668151569106656212371076950581517323424359657707275495659861304681258", + "48200354153645512092405378017278029286888535380384921634095420105910299659873", + "115792089237316195423570985008687907853269984665640564039456584007913129639936", + "109768671149026244196282058166387480657505063313740248501133168879717647348332", + "22260940331214902517078698554353337789774274525293014376850280696039113671882", + "37159670483240285730959311945893306683001739244975476702270549393749637514606", + "864000", + "115792089237316195423570985008687907853269984665640564039457584007913129206936", + "2073600", + "106086244508125417801857301639214534862807360304915830734311681226400224931449", + "57624664658493943488382046526502123636674525999134370480877318121633255299999", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "3858024691358", + "1157920892373161954235709850086879078532699846656405640394575840079131296399", + "300000000000000000" + ], + [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "0", + "524288", + "34207858796358477032982332199103227800680963682113900705888576394651738571131", + "29183581925083423688941024243556918472240950106681870258114121065667818400635", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "432000", + "21435634696674590800027916253531217193574632436428147040687748880920643523928", + "67567988112992069131955541420455057704257803104991654918452448815861751437772", + "115792089237316195037597354217633923108033367970014204528557635122444582841745", + "66016723424300789742696363044751745847457905496214292633421867648266750574086", + "12412309078229156196316056744446162391428261427606540221918756082497195137490", + "115792089237316195423570985008687907853269984665640564039457584007913129638936", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "115792089237316195423570985008687907853269984665640564039457584007334425936233", + "73472755327267776421973308026127877254448753235279241337722751419352711560487", + "53285008426236454566748051132682028847339819413115705816936981301928320165121", + "34409464797730214306226898492491677276600003951317999613796828717384507755085", + "18", + "106492840041486846078994543683459419558759103786120915856380467923469092650846", + "0", + "589822", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56752157347279760584061988459896466632251204665298637164382967127040309038142", + "24116738614601626636262316706834351425780113827152737585691601622391363697645", + "37746028149841154082348966465882482073739327117181144174744035728330047778262", + "208874671350783627654011619176166943532470262436182909541616019327963989612", + "65538", + "3", + "28860809708808363631733710670448367504969159117079683355777824792248834401129", + "29952", + "115792089237316195423570985008687907853269984665640564039457584007835820228608", + "327680", + "206592", + "36262485573400882232750948645659881895505511249913352717491315900047208532028", + "108176421999683139320006814703476022389868388800359599546504170566370496577026", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "51000410365724471114008171615480931417094146778501429531564914421877702670044", + "72624422193215754516809871724903902483456835817665995577449383577115760924952", + "76701031238723218773417768598239405779816635996681302996616590477272306380746", + "65415307578738459235868647833202766791924105994209683509064890500902214077672", + "499999999999410176", + "0", + "16524496294274308083629695117967514973992333081230357627998700327075389366270", + "25076302454345532317991179453975588392049298002395798453167346953400308525773", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "100", + "23143276188878733369855721787300701595409365797703421949038175060940957259413", + "63683295391262500040053660345123134963003649787555382418829139948715282215088", + "30972910534611766052885009708331548806574709113778432448704108758892053534717", + "106364059507797551682376345505614661870178866851126703545554566351126735737380", + "97768002048865966396787282783599486347509804181797120543182022396104440210205", + "29277865479763023002045455033991214767156294025312250057192566611586697073350", + "18302674894727366470512727863237702326500252143132806070327522819073946807535", + "68232125910207413510190944879114302259660552503671705522015289130982393687039", + "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "95505427571445525419893056846665506702282003017637153120937485582407915147849", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "113255691315972170737655322937944226254953141932784329941672505990365420689581", + "81576691732611813889692146194915255816437478366258821000512042635575890755298", + "90877200171590040849160843100203605841964938473240840015812931459296799469221", + "115792089237316195423570985008687907853269984665640564039457584007794221121536", + "76542401327271872630188488589529724892881472353281299693975843146660569631415", + "115792089237316195423570985008687907853269984665640564039457084007913129899136", + "70148538477787196565799666202731000647153111455354485542162922151222404106428", + "115792089237316195423570985008042581378843437462327153970303678099387767205687", + "110073217712000972854737607884891458488668168943622259050931618568476051748175", + "93284867035883231638201272367118637038182490523078318328091268509490756516749", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "57896044618658097711785492504343953926634992332820282019728792003956564852736", + "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "3", + "1", + "256", + "36371971318479799428720879351150229460299372035807030410998706812223634378751" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 400573 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601066000-a3361f1b-c64e-4877-b104-9e005664b987.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601066000-a3361f1b-c64e-4877-b104-9e005664b987.json new file mode 100755 index 0000000..befe1ae --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601066000-a3361f1b-c64e-4877-b104-9e005664b987.json @@ -0,0 +1,490 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5805bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70aaa625827d77aa233df42016988900477ead582090357ec011f404ff1f0aa321bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed69586530127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e05648dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "77066943699312596523560233185714836616924754343478096130098486630426813805083", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "30127b846a0115a3e561f49781eea70d4bcc4884906080e6adb068ff5fe13953", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "48dd821e471bd9a22c1f612735d2d7244c13832c4b0f28993ecafc561bfc52ae", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58d4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "4b3032484de1fb4c70c2a705584283a0288158e7d201a2526966e049d49acde5" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd350000000000000000000000000000000000000000000000000000000000000000f3e0a4b7d4b9f146c330bf4206493b9644386108e6fb9dbd1ec9e9631656b911", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "0", + "110308932790717902341334723675742636402013152744066319296234386176011142609169" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6, + "blockTimestampDelay": 447025 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7000000000000000000000000000000000000000000000000000000000083d600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3cb74a490a6b235de22fdba8b11c89c1a75ba52781eaa376b8904d607971473952c39b6854fd2443ddec68f9b401b12b2c3233b939e902ba2cc4b78fc21880c9", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "8640000", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "27462616626253393834172180586494418890954476283257859666307992469208736810809", + "37435261344928203651121242557808094327910915308413204917974281668150859169993" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20576, + "blockTimestampDelay": 441138 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29000000000000000000000000000000000000000000000000000000000009fffe000000000000000000000000c43801cd359a82757df4289878ce85539b0fcade000000000000000000000000000000000000000000000000000000000000006434998e76fdd43c55ad90e4a35d96044a3ebe674f5dfa103757d366102ca9f26c00000000000000000000000000000000000000000000000000000000000001000e694122e842adea5277bbbdab0b14091c2583d39824533976734442dab724e2195f41f8193b8fdb454e4c675da554f0f9409064f42db392c9ab9d5e83fad976fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "655358", + { + "accountingExtension": "0xc43801Cd359A82757Df4289878CE85539B0fcAdE", + "bondEscalationDeadline": "6518348376578069825047353184871606747778953752910129049968505915388248663266", + "bondSize": "23791578983227214469447533216306682837879210004146422934780693486186688803436", + "bondToken": "0x0000000000000000000000000000000000000064", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "maxNumberOfEscalations": "256", + "tyingBuffer": "11476126987972230713107770724661081842991657660629818104854040000448595417462" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc00000000000000000000000000000000000000000000000006f05b59d3ad0000", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "499999999999672320" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12976, + "blockTimestampDelay": 472659 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dcc0e4d0eee56b7f10aa9aefe04c4f650af62be8b532d57f12aa7ac5b950884c3a", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "87248350062624793638699702709121271409886681841563726628967995216176035155002" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29334, + "blockTimestampDelay": 296740 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681bebfb0dc367f431af08687c084e9c844567359d9793a12e0818425b7df16682a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "86278129664477803463997658766424154744739678303000950581784606393529462581290" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3566, + "blockTimestampDelay": 274227 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000000000000000000000000000000000000000000000000000000000000001", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "1" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38128, + "blockTimestampDelay": 65536 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9000000000000000000000000000000000000000000000000000000000004ff00bfa47f0f3034e3c5b418dac09c339f53fbdf69ff4b147e91a872420a6f7ed6e20000000000000000000000000000000000000000000000000000000000040000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "327424", + "86682393929289525193494153568452559356866521755790133919226203303415723775714", + "262144" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28049, + "blockTimestampDelay": 147436 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b681000000000000000000000000000000000000000000000000000000000000000a", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "10" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21572, + "blockTimestampDelay": 167216 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc87e2e521510210bb9f1efbff2cd79d7cd5675b7d503c446b0017b6bbcd5d492f", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "61463123393503677610123184398943346662098674670775488627974437033537892600111" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1005, + "blockTimestampDelay": 436171 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215564402b8b5f207f4eed188f382ae7d299d56800cfcdbfbdd380f5d111164d7f3", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "39019069361849810475124568581956515548187837436962789536769612725416477644787" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29390, + "blockTimestampDelay": 405151 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c44964af5d348042810c6713f567b2ae0a1329f9a41a31dd65689466b80ed86a98102cf683f24338dbd0d0b4e969d552adaa1cb2ba854e7981b39db6aa7a4eb4733a4406bfd9ab92f3b803843d5137445ebcd4035dd79b752232dceb1e4a553a7fc90bc23f646eb8405f9865cad125e2b67c4cb5be6b00c8cbfeb79ac596e5fee34b", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "45541126372497665840906508174782686333425760491760126897278402501345182128144", + "20337320375757040483596893633798835084481932414588544316829844888167896085306", + "30769198887980302917418981166398434808730110615619342329624446156192224018377", + "5318647182657600089902655701709793773207260177110878862668649309798760637259" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23482, + "blockTimestampDelay": 51930 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfcf6cf88d9f37a86121908cb039be9cc51a5103895c84fc649276df49538afcbad", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "111635642607345537592182708073224837457339443516741764226233323948854559624109" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23896, + "blockTimestampDelay": 360604 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655000000000000000000000000000000000000000000000000000000000004839c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "295836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55339, + "blockTimestampDelay": 85204 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c58670cef9c731503eed4776ba6fad6b3696fa16be2eb18b465fbafeeaa0fe7be70000000000000000000000000000000000000000000000000000000000000064", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "60809237075164466486500268418905379284411433772615587007980463004965951929319", + "100" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 38872, + "blockTimestampDelay": 360628 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601793000-336e2810-dd51-4d25-9729-a91266346caf.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601793000-336e2810-dd51-4d25-9729-a91266346caf.json new file mode 100755 index 0000000..71f1799 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803601793000-336e2810-dd51-4d25-9729-a91266346caf.json @@ -0,0 +1,394 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed6958658aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2def8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe2665f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "8aad3329b56f2f98187bbaed7351982ae06a00b9382adcb723b8b393d1f5e2de", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74e0613faa5f896b73380078af3c1ee8605eec949aaf9c8f422f264f3de916b58dc905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "101489901651207154401933345705911812335881908306802664469868899807780031346061", + "c905ee964be623d23ba97ccc5a2b838249eaa10a8671d6a68f97b09746107abf" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23884, + "blockTimestampDelay": 297676 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 1 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee2cac1a259bf9695aac61487b4606621f281407f44a6d621116f436e53e00628b", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "20205843492154653597326893919151713313559584018734749877274787063574636290699" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23891, + "blockTimestampDelay": 328958 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128984576" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23883, + "blockTimestampDelay": 276784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9c", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639580" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb001400000000000000000000000000000000000000000000000000000000001275000000000000000000000000000000000000000000000000000000000000000000a46e28ce399e11c208b07a84e457189f5b64e15f51e128b7baf507642bfef8c6", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129312276", + "1209600", + "0", + "74373941974452021616102119156230516273735358461823357873191033522071497799878" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa44b098effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0003", + "dataAbiValues": { + "methodSignature": "handleSetArbitrator(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574403" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43748, + "blockTimestampDelay": 541010 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f790139ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 11833, + "blockTimestampDelay": 213928 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d7f4bab9c72ef04decea93d5f106890883b64be0e4f50aa1ceebd5a435a7fa13a0000000000000000000000001302f0402bb094e65a1c38fc8979628fa7cb7eb80000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000d2f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "57577429716414119383889913852992200380066446236494108346454295294682507223354", + { + "accountingExtension": "0x1302F0402bb094e65a1c38fC8979628FA7cb7eB8", + "bondSize": "864000", + "bondToken": "0x0000000000000000000000000000000000093A80", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457584007913129639935" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30759, + "blockTimestampDelay": 56734 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff30838cd661e07d4920a4bce6f00da019a66f1a0c976d396f8827e2cc52ed8ce1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "21943445721707534311606538764242968064099548519492097564976924267444655983841", + "115792089237316195423570985008687907853269984665640564039457584007913129115648" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 2 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000ffff800000000000000000000000000000000000000000000000000000000007", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "115791205813783806231406193359937536394012070923692126229978523204812483330055" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23928, + "blockTimestampDelay": 603784 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c7440906eb1080127929789d55c169cd890ff51930058d460b835803e947a1382a9e3a84eb76ecf8f296e15f27686df9d7107dae93af0929c31ee8d76fd38476ee4", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "29203212251508816547276680880804676973046658682524638891611434720618890887849", + "e3a84eb76ecf8f296e15f27686df9d7107dae93af0929c31ee8d76fd38476ee4" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8633, + "blockTimestampDelay": 384652 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417afffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000e9d23751886f170e2b576c9a16ce5725aaa7d6b5a51829b582417606f258a52e", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128591360", + "105760313397677454187313767699264694345051805328600745402406216015374137730350" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803602532000-1be16f79-52f8-40fb-91c4-ea3d3e097ca0.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803602532000-1be16f79-52f8-40fb-91c4-ea3d3e097ca0.json new file mode 100755 index 0000000..dbf1328 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803602532000-1be16f79-52f8-40fb-91c4-ea3d3e097ca0.json @@ -0,0 +1,485 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408986d1481eea494dad550c07436bc6bf24fda1699ae18ac8e867c2bc2cbb811f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000148bd2b35a0e0ff5f58651fe93524e321532b27500000000000000000000000000000000000000000000000000000000001274fe000000000000000000000000000000000000000000000000000000000000001419d972fb93584a547a564eb672065531206d2c71000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "0", + { + "accountingExtension": "0x148bd2b35a0e0ff5f58651fe93524E321532b275", + "chainId": "\u0019\ufffdr\ufffd\ufffdXJTzVN\ufffdr\u0006U1 m,q", + "epoch": "62205062171946186530711375116649708949236787489916806320076639634871891493151", + "paymentAmount": "1209598" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57406, + "blockTimestampDelay": 508192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9cc0000000000000000000000000000000000000000000000000000000000000000235c58e45e6b448123df4ec75c527147b56e207c4815f37193cfafc12fe9143343aa8e00e44758769fcba79ddc533615c240383088eacc520788ca11f978270a", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "0", + "15994113140863775377512613840889015859198326455210825118094249343807524508723", + "30606304928112969978587259490316563804100123622315096384733063005977978611466" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14222, + "blockTimestampDelay": 506677 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d236b70e2ac17ad29db7127993a74e4044f47fe8ce7ed46db3cd8a16c797dd6a800000000000000000000000007743aecbf6a16d4951507d7551e5a420748d15000000000000000000000000000000000000000000000000000000000000003e8a4204edf78d831e0da05471c75e00fd5486a22d4239d68dbd4e843fd299ace8efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000007109709ecfa91a80626ff398ab49ad330281d12d", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "16020781443007852116740508170121164524726566377185661961033510726941712176808", + { + "accountingExtension": "0x07743AecBF6a16d4951507D7551e5A420748D150", + "bondSize": "74236390634738164828042936817328106253978822253810691447408898961590657404558", + "bondToken": "0x00000000000000000000000000000000000003e8", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "disputeWindow": "645326474426547203313410069154905908525362434349" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4534, + "blockTimestampDelay": 153607 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c17157bbc9215b06808392dcec2e0c7851767c42bcbb477c1c8c8d2f6788a5f1c33d9d", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "84937869156760602001974346264518001642163336959320593474760511948578749627805" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1000, + "blockTimestampDelay": 604800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574400" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36805, + "blockTimestampDelay": 229553 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa91f1b7da6044090f2bc54454fe4b82551e6e3fe26925710e360197150ba6c5040000000000000000000000000000000000000000000000000000000000069780fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "66012442094173021184902279859918771353213111919353305006878331952590280377604", + "432000", + "115792089237316195423570985008687907853269984665640564039457584007913129380736" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26105, + "blockTimestampDelay": 563160 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1eab46d9a71b9fc6196bc66df97ad0229e4ed4df31cb14738c45729db851061", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "87711067258970041198538357174074530315975071051269236784798286206430053994593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22062, + "blockTimestampDelay": 533426 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58571, + "blockTimestampDelay": 448941 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803615385000-3017e126-f28b-4de3-a2d0-55924f78cb18.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803615385000-3017e126-f28b-4de3-a2d0-55924f78cb18.json new file mode 100755 index 0000000..1d5751d --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803615385000-3017e126-f28b-4de3-a2d0-55924f78cb18.json @@ -0,0 +1,865 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408986d1481eea494dad550c07436bc6bf24fda1699ae18ac8e867c2bc2cbb811f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000148bd2b35a0e0ff5f58651fe93524e321532b27500000000000000000000000000000000000000000000000000000000001274fe000000000000000000000000000000000000000000000000000000000000001419d972fb93584a547a564eb672065531206d2c71000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "0", + { + "accountingExtension": "0x148bd2b35a0e0ff5f58651fe93524E321532b275", + "chainId": "\u0019\ufffdr\ufffd\ufffdXJTzVN\ufffdr\u0006U1 m,q", + "epoch": "62205062171946186530711375116649708949236787489916806320076639634871891493151", + "paymentAmount": "1209598" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57406, + "blockTimestampDelay": 508192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9cc0000000000000000000000000000000000000000000000000000000000000000235c58e45e6b448123df4ec75c527147b56e207c4815f37193cfafc12fe9143343aa8e00e44758769fcba79ddc533615c240383088eacc520788ca11f978270a", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "0", + "15994113140863775377512613840889015859198326455210825118094249343807524508723", + "30606304928112969978587259490316563804100123622315096384733063005977978611466" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14222, + "blockTimestampDelay": 506677 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d236b70e2ac17ad29db7127993a74e4044f47fe8ce7ed46db3cd8a16c797dd6a800000000000000000000000007743aecbf6a16d4951507d7551e5a420748d15000000000000000000000000000000000000000000000000000000000000003e8a4204edf78d831e0da05471c75e00fd5486a22d4239d68dbd4e843fd299ace8efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000007109709ecfa91a80626ff398ab49ad330281d12d", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "16020781443007852116740508170121164524726566377185661961033510726941712176808", + { + "accountingExtension": "0x07743AecBF6a16d4951507D7551e5A420748D150", + "bondSize": "74236390634738164828042936817328106253978822253810691447408898961590657404558", + "bondToken": "0x00000000000000000000000000000000000003e8", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "disputeWindow": "645326474426547203313410069154905908525362434349" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4534, + "blockTimestampDelay": 153607 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c17157bbc9215b06808392dcec2e0c7851767c42bcbb477c1c8c8d2f6788a5f1c33d9d", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "84937869156760602001974346264518001642163336959320593474760511948578749627805" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1000, + "blockTimestampDelay": 604800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574400" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36805, + "blockTimestampDelay": 229553 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa91f1b7da6044090f2bc54454fe4b82551e6e3fe26925710e360197150ba6c5040000000000000000000000000000000000000000000000000000000000069780fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "66012442094173021184902279859918771353213111919353305006878331952590280377604", + "432000", + "115792089237316195423570985008687907853269984665640564039457584007913129380736" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26105, + "blockTimestampDelay": 563160 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1eab46d9a71b9fc6196bc66df97ad0229e4ed4df31cb14738c45729db851061", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "87711067258970041198538357174074530315975071051269236784798286206430053994593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22062, + "blockTimestampDelay": 533426 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58571, + "blockTimestampDelay": 448941 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f9ad1b274a36d6422204cb38284e52c1e394b76dd420c12b133c0f54555fa8725", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "70026681373776152693382902846792773999381205621007041991972413057813542766373" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55128, + "blockTimestampDelay": 223499 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417aa9b7c8ba23219e921c8c24f084b211b31e9da2b176051da47b11bff8ff5c33212de575b81bb2e58ba5f1b8efa82a2605f4006b905e5e2cc82173eaf76a20add4", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "76765589790945662604547244204216214155946252006571676315847820028747638911777", + "20759498631951024433205069293438925811645138406748362097890303052587796049364" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17266, + "blockTimestampDelay": 47869 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc2e0a2c2d27894539cfe61cf1aa3dce6fa4cc0182d8a4f96446b30c16dcdb4280", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "20824364399678545662833682292547392236236046121352715060387808748443780465280" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8422, + "blockTimestampDelay": 175942 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6fab0000000000000000000000000000000000000000000000000000000000080000861226f42b4f83fda125862408777203fcf059cc4d6afa3d8b5f14cbd0503cba", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "524288", + "60641993806473011143834861665095605796555276187455692014587155889705714728122" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 5058, + "blockTimestampDelay": 564562 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e500000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "262144", + "393216" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54349, + "blockTimestampDelay": 446424 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ad8117bd6793da9372ee7a9f184c1f229a994a23f82083eb6803cf5612a5e084994694c28b481c29ef6ab1024c7f7ad48917e7b3644de29036693dfa1f6557a0", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "78478209922765382613928019011452160112457201279089481808494135837808952467588", + "69328571831131295636312210863921518104963878476144420959825437715154096969632" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 356, + "blockTimestampDelay": 94684 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008042581378843437462327153970303678099387767205587" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26236, + "blockTimestampDelay": 172938 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fff514b534b61c375c439f68b334317ec7ad1c81896f2e7f7d9e2bf248e8b86bb80269a17e974e3f307c7b602e63a3a5f54ab7520e1ce48c185b85068b23a50c370000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0ce9ae7037dff0632bada0555a4b2a1709ee25a0f6d47ff213ef7dab06f13492", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "110853235481380273198257434098634459560730545434260276739156884901825263201208", + "1091259233017721395373144204062272118708516766005316865622853242594359839799", + "645326474426547203313410069153905908525362434349", + "5840633478355227696719452384365761985173515625270275222857093897003304301714" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 48302, + "blockTimestampDelay": 98481 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc82f34f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00009c3ade46c6a10c03646645dceced151803cfed4a76a69d888d9528938805d33e", + "dataAbiValues": { + "methodSignature": "handleSettleBondEscalation(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128329216", + "70664815604550041696416122873938953675815643014153596578083942850550877770558" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21405, + "blockTimestampDelay": 224071 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a4f11ce728964fd5cfe4e67e0a4108fd7bd12e31d80bee3e9fd7503b25943d86bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600002fbcb13722d80a133f1e093640349fcea5017c8025ac70c52fefa1f32bef4147", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "35764176285829964837988166432096626338604401112435149938249800147871318923371", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "21592094227161796483602757534726537598958165417486369280358722180410608927047" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30001, + "blockTimestampDelay": 418139 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e300000000000000000000000000000000000000000000000000000000000003a8", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23854, + "blockTimestampDelay": 283267 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57fffffffffffffffffffe3bda3d84c15b95fe7640319d8a5c26029388bb4c0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570815840224595780479919275071395757947099535303139655680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 132, + "blockTimestampDelay": 172800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57439c4dea175c1f4dc2283a0dca8df089ec1e32de1a71e6049937ba0ef888023b", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "30581126742740578579461185375868096517298438186402910784813700598662223626811" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27956, + "blockTimestampDelay": 447027 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d3179a67678bb838478c44926fbd26493474eb791516d81ee5baa3765643a7f0f13935c24452e2a5faa498fca2a6c4ae1b3a3c6a9976af2868354336a0b5eae4a3df8b40fb6fcf686f1659e51d90d962d5cbfd1a55d1a1db345acbb7978cd9bd61", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "10676003636853416453138572180884583936897901964655062312574559468487432466673", + "25876816044475934884764655838030328364254713960717807302331158298975447737507", + "101111805466560395134870514718984948651558312084779106319072364710585748274529" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 9230, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dc97ea50d8c074d187de7cfc88d0f1c34dc24db2642bef23ec1b88370e17145d67", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "68713240332555606262576304945776648453307986915064085044793172925635856981351" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12052, + "blockTimestampDelay": 19785 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f0000000000000000000000000000000000000000000006f05b59d3b200000000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "32768000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 3 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803619106000-1075c611-326d-47eb-b752-8450c62dbeff.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803619106000-1075c611-326d-47eb-b752-8450c62dbeff.json new file mode 100755 index 0000000..9799367 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803619106000-1075c611-326d-47eb-b752-8450c62dbeff.json @@ -0,0 +1,1226 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27bfe6100000000000000000000000000000000000000000000000000000000000000006cd40d93882a844c2becf361c7579664aef7a6ef6e8b79d6bf6f6f76426e9b14039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee00b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80756993dc4be6ecf1e46c48d6f9cae9255a8b46ef956a3d85442a5f41f70ecf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad82082401f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade0554594d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae962914f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c33f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8fd276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf259a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe260d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077611617", + "0", + "49224452924880417829398231270379785502530069722970149981823851608145893694228", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "115792089237316195423570985008687907853269984665640564039457584007913128460468", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "53107142721938561923251317745913031228477959801596843755970727929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "a46715d7736dde0bcf6527392542031b42d0197ab2c1bb4c4d2d7abaed280007", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "1f75609c507c173f5aae6c5b095b7467bc3c68f537b152a4098190d3ade05545", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "4f70566ee9124b8b992b340fa37e1a1bb22b58d6f8b369b4324445225af88baa", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "3f80f6286a0451515f85ed4ac73ec0b08e91c2544aa6ec094cb76ae8f0ed2a8f", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "9a35f7475262524456d237345e6adf9fd3234c941242bba32a3c1c079af7fe26", + "0d35d19771f7c1af646e114de36d19c25e3fc040b27be76073113bb33db17d5d", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "51732741bef3d4aaf33269e2500fef3844fbab06c790899ddc230e09110a37fb" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e3caac5b7c00ae43f0a0d2465bc3a827daefa6255afc3feafd105a01b058af4cc3", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "91671724510984325847623981850838041499373483072178023597879983910219265559747" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 616, + "blockTimestampDelay": 245182 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x62e8fd357410315e284ca2250b236ba99041acd7e7626e3fc66727657ddcb75ed512355238b8e299444e7771cad3e9cc9efbc8237922a7b18f034d56199ddaad5f62f70c", + "dataAbiValues": { + "methodSignature": "handleOnDisputeStatusChange(uint256,uint256)", + "inputValues": [ + "52496900712745351460185096722717982602139275703227615313943886816707427317074", + "25656183307321870319256066529210878052151786525540532817103830451324188817164" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5cc02fa53b4e8ff8cbb94866d057a07c347e0cb79a079e6c49875d6adb448ca8b36b2f93", + "dataAbiValues": { + "methodSignature": "handleSetPendingCouncil(uint256)", + "inputValues": [ + "26825265794714411535119211388793422995701606456004679527746190657884506501011" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22951, + "blockTimestampDelay": 222797 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6faba969b1150e65eb039223322d37083c0f930e9f96e767cfaf888c1440b89042a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffbe15000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "76627612529152310655938988775485703136714009850335653768166292952282670580391", + "115792089237316195423570985008687907853269984665640564039457584007630014119936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 274647 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf4fbbf9b0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007c3160c01450d95568fbc7e3fe876965aa411c1bf13d7be2baabf28cedd3012f", + "dataAbiValues": { + "methodSignature": "handleBond(uint256,uint256,uint256)", + "inputValues": [ + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56174036476597730143689219709059961134239333858317208755745576773703517274415" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 404026 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94ae6f8c0000000000000000000000000000000000000000000000000000000000000120", + "dataAbiValues": { + "methodSignature": "handleValidateArbitrator(uint256)", + "inputValues": [ + "288" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 28898, + "blockTimestampDelay": 360593 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7e0000000000000000000000000000000000000000000000000000000000000100", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "256" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 10120, + "blockTimestampDelay": 442746 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f77477db96404997c322ba9a11ba66d9f58fa471415b5c82afcf1965a16b52aa310000000000000000000000000000000000000000000000000000000000060000a3d04e821fd24d173d46c5c6591bac6f9d3ee4250e38f6752d158a2114dae86a7312ea15e2dc75c19cc06e815ad4c43b0e39987ce5ac5a5bac39cbb127f734e6", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "52680060769579736990081276342150508425883578818293859365287572298297987213873", + "393216", + "74095040352905635550053635482030730013005988265241047193937642446333545212010", + "52049396432936944477776417116733628414171704893437425841548460736384299644134" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23866, + "blockTimestampDelay": 360369 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fb7ab9b804f5e3b07b64589457afe860d64ca8a1102a99dc3b01e9042b84b54c8", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "83076455368730213982012688072579720945989878255995701383969604691644153287880" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 3912, + "blockTimestampDelay": 284189 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b80400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b820000000000000000000000000000000000000000000000000000000000000000ce675a74f87f83662332b39024ab66f66d3ad8159fb92d1081e73d8747ac44a2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000f99ab80a56afb5cf2d406681086184fa568b2c59b23b9eed0fb97babbdd70dcb987572aba5f9d1eb2bdfd7db4a60daa53ab31e663abe9ea14abc72f369d5dae3d49d00025d7681398c1ac8e5b18d32589a9d3aee941f68217de08b573fb0ef22270657897cfb0e6dff27bde358d9cd33988862a59eafeb150f97e1fb0bd5db1eb09668549dc88efb456b69b806d30443b7484266af42ae24fadce2ada2bf2e00ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed300000000000000000000000000000000000000000000000000000000000100006558973ea0cf6ef065af511cdd91dcf8ebf51e410d0e710b8482f875357b01e5a82a9a69bb78fc7065db036b90eebef2590e8a9797d50a66dfb4ab86433720e10000000000000000000000000000000000000000000000000000000000002700fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e00000000000000000000000000000000000000000000000000000000000000010000688ad2bfdd1982f027350b11d5a66e4eb674020afc643610b6411864c705684cbaab39a71efe2422fd2229cf398d057b9b06ccfbe74bc3a4994ba9deed6f93052af9415df05e3b4e4bb3efd2328b1fac61e86adbbb1f32d9fe4d9fa96ef608ab9d48454c637331b80fc8bdfe0b16c68d224ae00eca2bc8b6b5b82eeb5dbb05bdffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3aaa89e9ec9968c5d9717eac26037a4e7abb9cc9d43af24edb06275ca7126a4c8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d0f6000000000000000000000000000000000000000000000000000000000009000056db5811b60eafc5a06420c40941879ca1aae8ba576dbb8f9dd9cbe1e4e187fb14c4c80ff0fa9624d2a9e63be6e238aa088864d7cd2780d36bc6dee000c42d1b000000000000000000000000000000000000000000000000000000000003f48058825231460c027d950a84d667bec6ad5f4731e0cfaef9f9b65d7008ad39ff50fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000000000000000000000000000000000000000000000000000000000000029f87ffe759d510e1c1d646f2c46946d2e09cce6ece48d285eecbab28b6da0aaafbe4233335f0868c51a18ff4b577aba2300ff0e1110fe6ebcf65aab5b22a0cd7af45a3243de6773b2ac820589df08ee53500a017476ffbb1bc4ceb09189a3a8688430464e8052902c1bf8131a3b65b1b8579578c0674f6b54e6508ebe3e773f92f62a3923b7d048bd00e06c64c9764f411dd42925c5a3bc087d2acf2dd45670afee5922c58e2ab2a48008017cf695319fc8f68540c785800cac4fb40071265bc6c57dd1da3996638b1d193cb3f0de7290b528e8c2553b44fdb00bd2f7afeb507f780ecfa7e55b67e34060e5a3ab3fc7c2fd6270fb027a69d0e3430e553adf6819c8dbcc8fe9ee062b2c79b12ff5516725f8025598c75085e7022536add4c3462e067f6eb57330f4a2635836735eb4e0053c2a02ad8f30b1ebb63d99a2cd2153db645c350fe8e5c04c29094fa388abef6a8faa96395cb0ff0901d9a9031f7631b22558fb38048fa6c225997c825a3070205c6bcc28d8335499c58531230e56b3a4aec270fc970dd1c77c0c5296114545b189f9c61f42ccea793f3b2f3b6c3b46fd6fb449fc87916235c006bf56db0c5c21f31410623781ece548911499cc23d8ac091676bc100d89c7174c55fa0bd83529b7e4cd0d2fb4476413f61972f0f860f6c403befbb5f69d0e304161de4e70ca3042a1d04835a72006a53c3175c5109baf4182d0da9a3e83b98e43af1ad858e630be26febe27f2c8a4f67eec52f53b0d005a92a11a1dd559351c3b253a1d1a70c23193b67441c058e70e67ac3f8ac4aee50ed009392925b73b400df2177c6a10fe1f591984b99794e9156c3bd0b4a2ed7517c12532c97966b24ef7deb1cf9e6cf37ab8f578cfd25cc9f82f16474fe7e1bde4298cc60088e914f35d7d5a66ef30363aca7be4e251f53e2f64b81e00b44a4f3ed31e5f1f4a517d25b06946975a9d79df88cf56c616ae4c81922660d533aa9317d842f948b3d2a5cab98f377cd1b719e1be52bfb774c70bd5ed589e3a4bff539f55e90e58abc8536ecc396cd34b566e938f0f4864fe1d6ff24fb8e3e3ab1b4c42b42c06700cd46a831b567bbdea115be603b7703579c8280ed0e5d4f20a9e510271e5bb61a194d5b0b205124c05d8991782e8e73158b0fd60717823b82eb7b4dd90cf778f8607913cad2914c4dfe829100903d1830199c1fbf569d6e37e2adb5d073c66fd3991eb8187063de6745dcedadabd41f6a70c7b2bc8e61d100de94b032f6d262a2e7a314c8a07740f33d9c56d018c1e78418ac315f32e91eed3eacbcded8e609c83aef09642cbfb3b717abe19c73fd5e49e008e320b3ee4ccaed6c353284dc811b9981746d05d363d35325d6f5e61340a544bf9b32b7b6cec1644b91e0b92085ff64c8d92b30f5ad1033570b6077b8bc2bb7a44a70045644d7bccb31cd1d59dc43541430d346d2a743381036d2f2e2a7a59e07c0c65de024350786615d3e7aa2c597a5d7e035e9d109e65d7d4badc94bc4bd2e55e3bc724b748e74a0fcacb73a2a9ee52f36347a5ae6072f300d6fd2f62bf08605016a6931767f353ac73babce9625b51569ab81df833bee00d3ff2bbb3badef2878a170d7d7109f33ab0f46bc96f4fc89ca727c7d8bc4282604b5bf3bbf0eea2bab4f7798601d86277e09f88645c1d56a4cae35b59d720e8b57f7e4abc5ea43a53526265c5cc4dedc5b72f127134d3d97a31a652f905f82ee74953598bf2a05f52dd89152ca9400523884d909d0469c6a966a2d841f4f01b74e98660ea5a28534174638ba83bf16343fcc653aaed6743963ad798004516fca1ba790701142e7b44788e2b9a4c6744", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "0", + "93359056366519978384575301215212766084552195127475241400321367131381031519394", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "112899263945265618091091185689767054075036928377626216345331905228274830609867", + "68959065517949274316588826283101587750558165013430347817640346533866916666083", + "96167718952585367175045237006581483249627268288674080939511722496406722768674", + "17651406335742926396690394648438989354403684618877496125906122976087978138398", + "79872808473243763044716704952744950461935635665535412421360192734135943376384", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "65536", + "45840124100760761585173752354748948632868900822901326367871013022630665716197", + "76063831858184420518861268628451249077285698597102935859033978034718219116769", + "9984", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "65536", + "47285815686966272144121693505188799597744533049049783177959832040536684193868", + "84432718589681428792934245815119003114976466487051385221334973405702499832581", + "19437535705728302099767088929537200823274258212636994203273729259332963797163", + "71140808496164046925239908329887697304458696034799907436633500076327881606589", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "77191109322862123514795600886680155988643876662484090273820952307332291142856", + "115792089237316195423570985008687907853269984665640564039457584007913128775926", + "589824", + "39286452316517865283766389032392547299789935223147165990478078739011264940027", + "9393939775408484523215953034946785494006122941999182174070733730995117501723", + "259200", + "40033788065363256588949523368348146912228695325379481069044606228254426791760", + "115792089237316195423570985008687907853269984665640564039457584007913129639930" + ], + [ + "f87ffe759d510e1c1d646f2c46946d2e09cce6ece48d285eecbab28b6da0aaaf", + "be4233335f0868c51a18ff4b577aba2300ff0e1110fe6ebcf65aab5b22a0cd7a", + "f45a3243de6773b2ac820589df08ee53500a017476ffbb1bc4ceb09189a3a868", + "8430464e8052902c1bf8131a3b65b1b8579578c0674f6b54e6508ebe3e773f92", + "f62a3923b7d048bd00e06c64c9764f411dd42925c5a3bc087d2acf2dd45670af", + "ee5922c58e2ab2a48008017cf695319fc8f68540c785800cac4fb40071265bc6", + "c57dd1da3996638b1d193cb3f0de7290b528e8c2553b44fdb00bd2f7afeb507f", + "780ecfa7e55b67e34060e5a3ab3fc7c2fd6270fb027a69d0e3430e553adf6819", + "c8dbcc8fe9ee062b2c79b12ff5516725f8025598c75085e7022536add4c3462e", + "067f6eb57330f4a2635836735eb4e0053c2a02ad8f30b1ebb63d99a2cd2153db", + "645c350fe8e5c04c29094fa388abef6a8faa96395cb0ff0901d9a9031f7631b2", + "2558fb38048fa6c225997c825a3070205c6bcc28d8335499c58531230e56b3a4", + "aec270fc970dd1c77c0c5296114545b189f9c61f42ccea793f3b2f3b6c3b46fd", + "6fb449fc87916235c006bf56db0c5c21f31410623781ece548911499cc23d8ac", + "091676bc100d89c7174c55fa0bd83529b7e4cd0d2fb4476413f61972f0f860f6", + "c403befbb5f69d0e304161de4e70ca3042a1d04835a72006a53c3175c5109baf", + "4182d0da9a3e83b98e43af1ad858e630be26febe27f2c8a4f67eec52f53b0d00", + "5a92a11a1dd559351c3b253a1d1a70c23193b67441c058e70e67ac3f8ac4aee5", + "0ed009392925b73b400df2177c6a10fe1f591984b99794e9156c3bd0b4a2ed75", + "17c12532c97966b24ef7deb1cf9e6cf37ab8f578cfd25cc9f82f16474fe7e1bd", + "e4298cc60088e914f35d7d5a66ef30363aca7be4e251f53e2f64b81e00b44a4f", + "3ed31e5f1f4a517d25b06946975a9d79df88cf56c616ae4c81922660d533aa93", + "17d842f948b3d2a5cab98f377cd1b719e1be52bfb774c70bd5ed589e3a4bff53", + "9f55e90e58abc8536ecc396cd34b566e938f0f4864fe1d6ff24fb8e3e3ab1b4c", + "42b42c06700cd46a831b567bbdea115be603b7703579c8280ed0e5d4f20a9e51", + "0271e5bb61a194d5b0b205124c05d8991782e8e73158b0fd60717823b82eb7b4", + "dd90cf778f8607913cad2914c4dfe829100903d1830199c1fbf569d6e37e2adb", + "5d073c66fd3991eb8187063de6745dcedadabd41f6a70c7b2bc8e61d100de94b", + "032f6d262a2e7a314c8a07740f33d9c56d018c1e78418ac315f32e91eed3eacb", + "cded8e609c83aef09642cbfb3b717abe19c73fd5e49e008e320b3ee4ccaed6c3", + "53284dc811b9981746d05d363d35325d6f5e61340a544bf9b32b7b6cec1644b9", + "1e0b92085ff64c8d92b30f5ad1033570b6077b8bc2bb7a44a70045644d7bccb3", + "1cd1d59dc43541430d346d2a743381036d2f2e2a7a59e07c0c65de0243507866", + "15d3e7aa2c597a5d7e035e9d109e65d7d4badc94bc4bd2e55e3bc724b748e74a", + "0fcacb73a2a9ee52f36347a5ae6072f300d6fd2f62bf08605016a6931767f353", + "ac73babce9625b51569ab81df833bee00d3ff2bbb3badef2878a170d7d7109f3", + "3ab0f46bc96f4fc89ca727c7d8bc4282604b5bf3bbf0eea2bab4f7798601d862", + "77e09f88645c1d56a4cae35b59d720e8b57f7e4abc5ea43a53526265c5cc4ded", + "c5b72f127134d3d97a31a652f905f82ee74953598bf2a05f52dd89152ca94005", + "23884d909d0469c6a966a2d841f4f01b74e98660ea5a28534174638ba83bf163", + "43fcc653aaed6743963ad798004516fca1ba790701142e7b44788e2b9a4c6744" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18813, + "blockTimestampDelay": 166386 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa21e47192f11d3f380576fd394ec9e1b4eb90a89bceb9b651bba78bf6ab564d9dfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4d00002c95da414ee489142bbc6e001fef7a12692a3b9d1210170c80e8d07cec96b7c5", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "15329948992898956970077422041464151575333773433396765238718102692294303305117", + "115792089237316195423570985008687907853269984665640564039457084007913129574400", + "20166531891724206848272694213144022190042376042953875838430089970096862050245" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7764, + "blockTimestampDelay": 145528 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15165, + "blockTimestampDelay": 79666 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94c9ca03", + "dataAbiValues": { + "methodSignature": "handleConfirmCouncil()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 12967 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6fb9725d6fa85600a910792fa1036f0fc5f7aeee3d8a3c5f020c4eee7ab3acd4d2", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "83879942425981193648324846942207323156479086214801606686020480705403632276690" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 34946, + "blockTimestampDelay": 577539 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9ccfffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4dff000000000000000000000000000000000000000000000000000000000000015180106377bcc6e3833de20fde0dec86034d72977efc56ce65d621eec9aef2e6254e", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457084007913129639680", + "86400", + "7412749833975990795345248015108177440376656993723510144021351295583332476238" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 16720, + "blockTimestampDelay": 129266 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace485fa72019613288a4d464af2e38b993bd6f4e91917334b0d1a52c61978ac8a8d2d39b6fe2ce149b4c141eb36a6107fd82a5e7526b6b0b9060ad19f590c521250000000000000000000000000000000000000000000000000000000000069780341dd0fd9f3ef23b5f0565845080e00f95f62e8508ba20febb8b8b6308593a55", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "32735529026180125829021357241527250244118779294171178089592553115267256469672", + "95359575720277367758421281161102555105495114724495679053042926100061433962789", + "432000", + "23572949092085613514975120988405477088071192393031085611716095677121225636437" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40389, + "blockTimestampDelay": 599734 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c5d04a79d586d6e202ac0bf3b7e68f4375a1303a65babaf4944016b6481419266", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "42073319140166927053960887268496944931506674334749535415241953198096253031014" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53112, + "blockTimestampDelay": 602139 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x40605c3faf2cf332d4be6aa3f13f683b2f3927dcfd17bd3f54a714dce4631f08661b5a3e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000001b71a14cc5c581000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008f83e5e1824c2e7448d4275eb1478eab6171c49a682fbaca44925028ba6b634ac3e77046f1673cfe53d1613ee88d823fd8aad7fdbe164cb637dfd93231185710000000000000000000000000000000000000000000000000000000000090000fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c00009f6eee7e10961fd4bdef3767d64c40c41041a44c6addeb15c424f8d94e48bc0f0000000000000000000000000000000000000000000000000de0b6b3a7640000ca36abf2deffed0c5066b5dff652794584689a6c7e705862ae7f597d1feb13e000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000012700f8cec1bca23ec15d783db7ef8f8cd2b323c5e0d231dab89cdd395bab8f65bac2c3edd48e36942610f12c56fdc9357fb10b3a3e19be3a4066f231966c6406cf5effffffffffffffffffffffffffffffffffffffffffffc87d253162700000000093df552fbae09922d5e1344f074adbf47a846017eb175b4402261497333a2055a4d33262e07685ce10e34f6961b25194b96689b2a080e5978b2503a001cff5246a2026be7cf65c6125395dd3bc1eb0c4f1cb378693a5f9b0d7b6653b198dafb7dfd2097d05560b48c451fde495c0ce47901168cca4573e1d273864cea467a8554643a7c00f45a9c007353f2f8ca155cafb190aa7ee8bc474573d7373c863ab3700000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00007c26e68c22654056c9c7702aad1aa4eb1e874e2c5a7a20dcd3ccc3235bfaca46000000000000000000000000000000000000000000000000000000460000000071ecfe0fc25f5a80cc385509ba80f4ffb79779b42f787513c5d5695172cacf5bd11c1220171fc7f914eff9884727a5769f2b8e2d87e0c22f70fc2eedec98f47971cfcf2f40fd975cf40b591f12bcad2627a1d305e669ab648a6d1d6e9e8ba228db79eb5fdad89f08678f0421eebe41120e329edf9435dd8993b8f86fa6a5e606b92565b5ec953a8bdc7dcfadf6dc773c57ec40957931aff64bf580bd469d73f5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff900000b23ad6af11c884d96e499df75402570d05d525bf13bffdd005aba9c2f4d4d1e0000000000000012725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f2100000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000030000088ea18fb122584b1efa4d9e532c2d7376b9f0c47ff2eadf136d21989711216eb9716cdd484bb8bbe02ab9174b86bd7b509bd2eeb30877a23d529a1a43c1292a0000000000000000000000000000000000000000000000000000000000000020256038ae865306af96b60f1ff7f5f081cf29f9d852b575755ccb4accb34c440effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00f1e89b7d2ae0d60246f6b9863d6666883f2d35880bb617df8c197ea6a6f3bac319717d397a1e43d1ec8630e471a8adeb41f8ffa88fe8815a4248d755c19e6c2b00000000000000000000000000000000000000000000000000000000000000c47e910dd1a6977f98a111add8eb5444304438c90e3a7966b0e784c222e1e04f360000000000000000000000000000000000000000000000000000000000070000f3657bb93d92c779a7b3185266b8f8f8dab51c3837de27303ce3ed22b7c8232a6a906f04eb8e4039b614701bfea32b7ba4a2f3552a2c30f4c306ab2f2ed00e61fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c0000f2aeddbdc99b983797d26060078418723a7fc368f920516f8db6a0f8da37726c31373ee7f75e203fd4190399cec9ec1168f34323e93b89896930b25dd042c4ca5227a0cf23b80943a5950a8a918993cbb07a34c40b95fba67d521e49532ec56e00000000000000000000000000000000000000000000000000000000000d2f00fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9649800000000000000000000000000000000000000000000000000000000001fa400ea8aafc25424af88048ec96fd9ff8565e5e76a86744505329081bc2f1c426e797f666785d36b7006166b3640a4320dffa47ca2708b45eeef576d547c61209b9fffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3000000000000000000000000000000000000000000000000000003824430f69e028f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f5c28f0000000000000000000000000000000000000000000000000429d069189e0000000000000000000000000000000000000000000000000000000000000000004dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800004ba0f6427e3508d8bd04b36abd26f824e48305823859cb7b5564c67168d0017b4085526fc18f9177aff8ce39103da1f9971495b564928a93c75f38b11297ab7bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000000000000000000000000000000000000000000000000000000697802f6423a89ba203deca11a1e637c14b3cd81945e8ddefaf89925c08901762555895622042fb9be61a1c172f8bc46ed4e946fc0edec8916bd330f619d53d9159ccffffffffffffffc282c7449873c3e7a76b006cac63d2bf0026054e2b6cd0ed9191f4242dbc893426f41de7e20a15eaa229434100aa190cbfdfa26c71bebabe061b711e33c5a2626a21641421aae78ad10302c3e4b68e0084326ce1a976ecd9d2fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff7942924169a2701b17adb49021260199c82feb263dae20dfb1f06f6d7b0e281b9bdd61fd2775ce3ef9f0b5c0c01dc8a2a4816283877ed45116d47568bec7b63dd5138de5014c131120b22f2a6188fc709abab26e2493c64a0a47d68524e454a808e9d68a4d0000000000000000000000000000000000000000000000000000000000000012eb70cfbcdc4cd24d362862bb16dd8354de5c369027336f4ddbea81c90fc5ff5e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008fffe0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b007d78952ef91d5b6abe516ac64db444e3979fd26dca0df8c7995a2c199d038c3e3551972009bb26ba918f6da4305f8f74758d7998388287d7bc569f242db37bed53737eadc62c4e9c12e0eaeb0d3f291ca3d6a6736abe2fff500d5995b84a6dd600763808282f4724a7f5980b0fde1691a8ec464e20d6161bf3806d15f485866c000000000000000000000000000000000000000000000000000000000001000200000000000000000000000000000000000000000000000000000000000000033fcea3b0db78d1875e79b1354a2407d71f81529bd4b8d9e53648947656a923690000000000000000000000000000000000000000000000000000000000007500ffffffffffffffffffffffffffffffffffffffffffffffffffffffee0000000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000032700502bd6e947dd8d5f04af7e204d2f8fda4599e101b7d8f26a70b66100ed50c83cef29af6267e45562d930be4d012c9990e9f3ec312fd1fb1250d2f24941337e02fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c58070c1359629497822e1f9451d29df743ae330181bc9e2b10c549974773e8036dca08ff75ee457748096c6c1f4780e2f123afe03bd9044610c1f6bf171c8ea1918a9933ec858ef5823627e1952d0f024adf07d4fb760118799b53f281c64e36fca909fc08433a01c2f761ec47689e0e4afcf53553aa23a009cdf034acc2cc28ce800000000000000000000000000000000000000000000000006f05b59d3a90000000000000000000000000000000000000000000000000000000000000000000024888890ead6a3fa688eea15c1fb851c542c73063e36b474f733e77cc1e3dffe3770af29006695416eb06d59ee21b71f351d172b306175ce5098c4dafc5ceacdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b000000000000000000000000000000000000000000000000000000000000000064332aa14fde53e1900e8b9e18e67ebbe584887125c7c87df20e55e7d2ccc596958ccb77c59cf7412d78e3502ca4ed593c96d7889d3aa7e2f35af20e45fb3f30b0447a0bce98c36c3f1464d030d94e1faa4cf1282192d66dc267208a05c20417fdeb27ec9d62517b40aa048bad057b792ea4b5570140d61938df4e248e9f41d224d826ba696696ef5c2f84a5bfa22440b058ead7b89ee23930cf5834e89ffae31d40baaf432a54fdc1149e61a4c275de983dc6e109fdee048e1db1fceec55312c62876f266ef80348000d46774154ffe91a79395f18511d8e4dbf5524576e1ecef96da03c301964363dd537b3d196514d16428949f3e7677accc3a4cb7b53eabffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecd3262809b86aae0f6733691180bc3d4d28aa37b824be525776cf70cf5dfa1249fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb0000fa64731c4bac6932747b966f080ff4b69feea1ff4b5a34c11a499e46984b98adb45ac57345fa90da513dba9ee818309393b78a691fea587e6709af7e00c33ee2c8eaac2a564ea749c4f885df3f46c1b11bde75aa4c71483d327a89c0a107aea5ffffffffffffffffffffffffffffffffffffffffffffffffffffffe450800000a93976c1ea3eab6d00cc0755bddd65e8d9fdc33a21c2244a148af731cccb4ab7fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c51f4809b16aa6fd5ddc427ff517fc492793a03d0d1053e9c7d646d348b1f6c819ec8bcffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22f37f35b3bc1a21297e47c7ffb746b9f0392c95c41bffc375673d43fbb56fb3db54fce3d5d19c16c9ebb75ad9e08868f532e1c3cef92c2c9815209447828bae8fb8dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600008000000000000000000000000000000000000000000000000000000000008000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001005069ce6545751092cbc2eff7f8a196368084a8d6575e723789a0a8550ab98fff", + "dataAbiValues": { + "methodSignature": "handleAmendEpoch(uint256,uint256[],uint256[])", + "inputValues": [ + "79234168267686009005088260694588693407234102385107460922602254484253129267774", + [ + "129600000000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "4057111305782275886571448300120152255027125755784863430760218107684929844788", + "77908175901692034127470361839288991262578550865601348498225359157260673189233", + "589824", + "115792089237316195423570985008687907853269984665640564039456584007913129639936", + "72113742116195548480853306837104241632999023982387119790698814234496216906767", + "1000000000000000000", + "91463791901734848429633524612431015587287462192412548639048745950508510548960", + "524288", + "75520", + "112538894066595722788315856528659501863855106263622911153991922780102220692162", + "88621215232375177742539071784431089817151237292122275030738334703048582418270", + "115792089237316195423570985008687907853269984665640563777313584007913129639936", + "66884583572423189936125899179878352008538100011771012405602043541671303061589", + "74552459651354750430174029843320369767657394133388412894085302753361367397668", + "48001968457810261411432527469825735958997723895879576113893948479301808402359", + "101236868603944277764776604371323779743105874173437918010876456299226217293909", + "31781435923726815159842015427101927434769505588009900572451953949977556003639", + "35", + "0", + "115792089237316195423570985008687907853269984665640564039457084007913129639936", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "56155524592461176289193537074028160427039803039682165510113327887820869257798", + "300647710720", + "51530081265637896148265832957451117723923258375630496683253581940896230461275", + "94582982168304262223100306942296660289078495773942778513563741163193733018745", + "51478519167773814506353660548389024638097489026918201160503420063837816857128", + "99271926829207145105184311505618387825667524547266582325691221310367712273926", + "83743952310347544629337739241152284883214803800419070987633781806314039374837", + "115792089237316195423570985008687907853269984665640564039457584007913129181184", + "5038477866947515063779293836246906523661855668185302495208724210093145279774", + "115792089237316195423570985008687907853269984665640564039457", + "393216", + "196608", + "3870510126953272661260638544693110069552065422800236658373254995620968604014", + "83878282060591541165988934124893916466315011269761026377742732144499153250602", + "32", + "16905583918771723668203985488747601465300647358530698843745608175382153675790", + "115792089237316195423570985008687907853269984665640564039457584007913129639680", + "109418378172788479097976565158528463610367949333061091923009466030448721509059", + "11508339200772475836942584238735894096008812481055785241282078323770931440683", + "196", + "57247707120759955627861231083084937748463087404077160699542249942796596170550", + "458752", + "110091327668151569106656212371076950581517323424359657707275495659861304681258", + "48200354153645512092405378017278029286888535380384921634095420105910299659873", + "115792089237316195423570985008687907853269984665640564039456584007913129639936", + "109768671149026244196282058166387480657505063313740248501133168879717647348332", + "22260940331214902517078698554353337789774274525293014376850280696039113671882", + "37159670483240285730959311945893306683001739244975476702270549393749637514606", + "864000", + "115792089237316195423570985008687907853269984665640564039457584007913129206936", + "2073600", + "106086244508125417801857301639214534862807360304915830734311681226400224931449", + "57624664658493943488382046526502123636674525999134370480877318121633255299999", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "3858024691358", + "1157920892373161954235709850086879078532699846656405640394575840079131296399", + "300000000000000000" + ], + [ + "115792089237316195423570985008687907853269984665640564039457584007913129639918", + "0", + "524288", + "34207858796358477032982332199103227800680963682113900705888576394651738571131", + "29183581925083423688941024243556918472240950106681870258114121065667818400635", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "432000", + "21435634696674590800027916253531217193574632436428147040687748880920643523928", + "67567988112992069131955541420455057704257803104991654918452448815861751437772", + "115792089237316195037597354217633923108033367970014204528557635122444582841745", + "66016723424300789742696363044751745847457905496214292633421867648266750574086", + "12412309078229156196316056744446162391428261427606540221918756082497195137490", + "115792089237316195423570985008687907853269984665640564039457584007913129638936", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "115792089237316195423570985008687907853269984665640564039457584007334425936233", + "73472755327267776421973308026127877254448753235279241337722751419352711560487", + "53285008426236454566748051132682028847339819413115705816936981301928320165121", + "34409464797730214306226898492491677276600003951317999613796828717384507755085", + "18", + "106492840041486846078994543683459419558759103786120915856380467923469092650846", + "0", + "589822", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "56752157347279760584061988459896466632251204665298637164382967127040309038142", + "24116738614601626636262316706834351425780113827152737585691601622391363697645", + "37746028149841154082348966465882482073739327117181144174744035728330047778262", + "208874671350783627654011619176166943532470262436182909541616019327963989612", + "65538", + "3", + "28860809708808363631733710670448367504969159117079683355777824792248834401129", + "29952", + "115792089237316195423570985008687907853269984665640564039457584007835820228608", + "327680", + "206592", + "36262485573400882232750948645659881895505511249913352717491315900047208532028", + "108176421999683139320006814703476022389868388800359599546504170566370496577026", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "51000410365724471114008171615480931417094146778501429531564914421877702670044", + "72624422193215754516809871724903902483456835817665995577449383577115760924952", + "76701031238723218773417768598239405779816635996681302996616590477272306380746", + "65415307578738459235868647833202766791924105994209683509064890500902214077672", + "499999999999410176", + "0", + "16524496294274308083629695117967514973992333081230357627998700327075389366270", + "25076302454345532317991179453975588392049298002395798453167346953400308525773", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "100", + "23143276188878733369855721787300701595409365797703421949038175060940957259413", + "63683295391262500040053660345123134963003649787555382418829139948715282215088", + "30972910534611766052885009708331548806574709113778432448704108758892053534717", + "106364059507797551682376345505614661870178866851126703545554566351126735737380", + "97768002048865966396787282783599486347509804181797120543182022396104440210205", + "29277865479763023002045455033991214767156294025312250057192566611586697073350", + "18302674894727366470512727863237702326500252143132806070327522819073946807535", + "68232125910207413510190944879114302259660552503671705522015289130982393687039", + "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "95505427571445525419893056846665506702282003017637153120937485582407915147849", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "115792089237316195423570985008687907853269984665640564039457584007913129312256", + "113255691315972170737655322937944226254953141932784329941672505990365420689581", + "81576691732611813889692146194915255816437478366258821000512042635575890755298", + "90877200171590040849160843100203605841964938473240840015812931459296799469221", + "115792089237316195423570985008687907853269984665640564039457584007794221121536", + "76542401327271872630188488589529724892881472353281299693975843146660569631415", + "115792089237316195423570985008687907853269984665640564039457084007913129899136", + "70148538477787196565799666202731000647153111455354485542162922151222404106428", + "115792089237316195423570985008042581378843437462327153970303678099387767205687", + "110073217712000972854737607884891458488668168943622259050931618568476051748175", + "93284867035883231638201272367118637038182490523078318328091268509490756516749", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "57896044618658097711785492504343953926634992332820282019728792003956564852736", + "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "3", + "1", + "256", + "36371971318479799428720879351150229460299372035807030410998706812223634378751" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14210, + "blockTimestampDelay": 400573 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c53a081d828024921fb3e3683ee9c830c9ef8fe7170b756ea62bd96e34e3b5815efcd959d04e5e2bb935b8d78af63ef65d615f65b47539442594d9d77842991252", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "26248483663279818942769151459442293438689108851134711186925856570646541467998", + "114366863527386908765268916558662682870996281964872496749692396286780789822034" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22904, + "blockTimestampDelay": 426359 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x94c9ca03", + "dataAbiValues": { + "methodSignature": "handleConfirmCouncil()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 47590, + "blockTimestampDelay": 385660 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21016, + "blockTimestampDelay": 327698 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317db0e96ec45f70ab1a6b185bc8774865b3d4442a4eae0912cd756a58dd44ddc85600000000000000000000000002dbda51f6437fdf1e44affb97108ea687053adc000000000000000000000000e106fb87761caff2d1021dae243c793900fe4fd3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeae800000000000000000000000000000000000000000000000000000000000020000fffffffffffffffffffffffffffffffffffffffffffffffff21f494c5892c580", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "80019501203046958414394083451296369194874809996177420511204869599524250568790", + { + "accountingExtension": "0x02DBdA51F6437FDF1e44Affb97108ea687053adC", + "bondSize": "115792089237316195423570985008687907853269984665640564039457584007913129553536", + "bondToken": "0xE106Fb87761CAff2D1021dae243C793900FE4fD3", + "deadline": "131072", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039456584007913129035136" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58748, + "blockTimestampDelay": 468302 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5356b68100002aaaaaaaaaaaaaaaaaaaaaaa97d3c29032b9263fef9802113b192c401b7b", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "294474510796397388263882916788845269212960402075010055466470535531076475" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 31003, + "blockTimestampDelay": 360622 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x8f7901394925ff1fabdf3b9d527631e86f50c69fb786e3cc228f43c5735c956e5508d302", + "dataAbiValues": { + "methodSignature": "handleReleaseUnutilizedResponse(uint256)", + "inputValues": [ + "33085972087152259398148350074173106701657181330427390166930419516768067834626" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26544, + "blockTimestampDelay": 136959 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf6424e9bffffe00000000000000000000000000000000000000000000000000000000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb800002aee4fcf576c5dea63797d217f235698ebd8cdd524db712f1296991b09598746", + "dataAbiValues": { + "methodSignature": "handleProposeResponse(uint256,uint256,uint256)", + "inputValues": [ + "115791868381433098125529787096500314988455506230153454587087818807137968062465", + "115792089237316195423570985008687907853269984665640564039457584007913124921344", + "19418200069791549251573263598653038858089745834953586683332351663093031995206" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4532, + "blockTimestampDelay": 17718 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c27e43b2b1d328dee8e830879ac3e2b9df761fc4a14a6ae5ee3b89af83d2aeef730000000000000000000000000000000000000000000000000000000000003f4806b57ef5c3a635d84449b97cd66554b160268e4143a35cef59db2db750a404fc0", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "103231871016062028531064071152861392754600756700206012478131799386887709194032", + "259200", + "48552842496886188745291309869104770288336858018271129304343490604919439773632" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8721, + "blockTimestampDelay": 360624 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf6424e9b00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001a1d0a78419e659224765d2783070264b6e3cbdeebe5a666256d4c0d90dac2a90", + "dataAbiValues": { + "methodSignature": "handleProposeResponse(uint256,uint256,uint256)", + "inputValues": [ + "18", + "1", + "73191028964460233593113434797713296606570423639561929865580574633996067809936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 5055, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbd6958e2a8bec647797b1b8d67b5b689a06e4b0ebe48b60c0c3236339998b513c1", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "47649895986979786096688120517291916155931486675728401123136021757509814784961" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1, + "blockTimestampDelay": 8 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb550870000000000000000000000000000000000000000000000000000000000020000", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "131072" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50125, + "blockTimestampDelay": 572210 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15166, + "blockTimestampDelay": 501398 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f29fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d100000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000006f05b59d3b20000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80002fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0a80000000000000000000000000000000000000000000000000000000000005ae80fffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e761fffe", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128775936", + { + "accountingExtension": "0x0000000000000000000000000000000000020000", + "bondEscalationDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129380480", + "bondSize": "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "115792089237316195423570985008687907853269984665640564039457284007913129639934", + "maxNumberOfEscalations": "115792089237316195423570985008687907853269984665640564039457584007913129115650", + "tyingBuffer": "372352" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8721, + "blockTimestampDelay": 164017 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c0000000000000000000000000000000000000000000000000000000000026880", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "157824" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 29918, + "blockTimestampDelay": 360626 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c74fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd00008b2f504a4886d33cd469df19bfc32eba3779a7310ec1722a15121f5054513179", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "8b2f504a4886d33cd469df19bfc32eba3779a7310ec1722a15121f5054513179" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 377, + "blockTimestampDelay": 1000 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da90000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000003f480de6deef4c262a02d1f4bda352984d86fd869a14691a94439107158d74c5c1fd7", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "2", + "259200", + "100607687929874661888418568661020325420350303704691485588886032412608028221399" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4369, + "blockTimestampDelay": 453266 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x864e2da9604929f514cd72e1360f1d390baf51677176a6697e70e82bb9ce3146e15f3aa200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleArbitrateDispute(uint256,uint256,uint256)", + "inputValues": [ + "43551302878700309751465049940172781782590258137281385509759150610741639199394", + "2", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c17157f4be88a44d136c69ee53db4fd74b38e9bf32139950068f561dbef47ed1bd8973", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "110700979063676345534466355249276805376668590527194368940538449802091952966003" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57589, + "blockTimestampDelay": 423465 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106acefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4858b9e35f1b33c1f713b9d02d61a28d487272d8586e5fbfe7544f0604a9e7c64fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaf480000000000000000000000000000000000000000000004563918244f400000000", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639636", + "60404292533832586578238192527676098722506526996609456400172227640449105296484", + "115792089237316195423570985008687907853269984665640564039457584007913129309312", + "327680000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 51115, + "blockTimestampDelay": 495910 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dc00000000000000000000000000000000000000000000000000000000000d2f00", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "864000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 48291, + "blockTimestampDelay": 575782 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9c6a282d9143762774ef58fb6edafdc2e9c4160dc11640a5c6518a3577ec00aa58", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "48016150327299774183799517909410866737169299315003449758719295823099925146200" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 60205, + "blockTimestampDelay": 321792 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803628684000-d5281764-a7b2-4459-a57a-1d3573814c84.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803628684000-d5281764-a7b2-4459-a57a-1d3573814c84.json new file mode 100755 index 0000000..3d9e87b --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803628684000-d5281764-a7b2-4459-a57a-1d3573814c84.json @@ -0,0 +1,1623 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408986d1481eea494dad550c07436bc6bf24fda1699ae18ac8e867c2bc2cbb811f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000148bd2b35a0e0ff5f58651fe93524e321532b27500000000000000000000000000000000000000000000000000000000001274fe000000000000000000000000000000000000000000000000000000000000001419d972fb93584a547a564eb672065531206d2c71000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "0", + { + "accountingExtension": "0x148bd2b35a0e0ff5f58651fe93524E321532b275", + "chainId": "\u0019\ufffdr\ufffd\ufffdXJTzVN\ufffdr\u0006U1 m,q", + "epoch": "62205062171946186530711375116649708949236787489916806320076639634871891493151", + "paymentAmount": "1209598" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57406, + "blockTimestampDelay": 508192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9cc0000000000000000000000000000000000000000000000000000000000000000235c58e45e6b448123df4ec75c527147b56e207c4815f37193cfafc12fe9143343aa8e00e44758769fcba79ddc533615c240383088eacc520788ca11f978270a", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "0", + "15994113140863775377512613840889015859198326455210825118094249343807524508723", + "30606304928112969978587259490316563804100123622315096384733063005977978611466" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14222, + "blockTimestampDelay": 506677 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d236b70e2ac17ad29db7127993a74e4044f47fe8ce7ed46db3cd8a16c797dd6a800000000000000000000000007743aecbf6a16d4951507d7551e5a420748d15000000000000000000000000000000000000000000000000000000000000003e8a4204edf78d831e0da05471c75e00fd5486a22d4239d68dbd4e843fd299ace8efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000007109709ecfa91a80626ff398ab49ad330281d12d", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "16020781443007852116740508170121164524726566377185661961033510726941712176808", + { + "accountingExtension": "0x07743AecBF6a16d4951507D7551e5A420748D150", + "bondSize": "74236390634738164828042936817328106253978822253810691447408898961590657404558", + "bondToken": "0x00000000000000000000000000000000000003e8", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "disputeWindow": "645326474426547203313410069154905908525362434349" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4534, + "blockTimestampDelay": 153607 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c17157bbc9215b06808392dcec2e0c7851767c42bcbb477c1c8c8d2f6788a5f1c33d9d", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "84937869156760602001974346264518001642163336959320593474760511948578749627805" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1000, + "blockTimestampDelay": 604800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574400" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36805, + "blockTimestampDelay": 229553 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa91f1b7da6044090f2bc54454fe4b82551e6e3fe26925710e360197150ba6c5040000000000000000000000000000000000000000000000000000000000069780fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "66012442094173021184902279859918771353213111919353305006878331952590280377604", + "432000", + "115792089237316195423570985008687907853269984665640564039457584007913129380736" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26105, + "blockTimestampDelay": 563160 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1eab46d9a71b9fc6196bc66df97ad0229e4ed4df31cb14738c45729db851061", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "87711067258970041198538357174074530315975071051269236784798286206430053994593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22062, + "blockTimestampDelay": 533426 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58571, + "blockTimestampDelay": 448941 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f9ad1b274a36d6422204cb38284e52c1e394b76dd420c12b133c0f54555fa8725", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "70026681373776152693382902846792773999381205621007041991972413057813542766373" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55128, + "blockTimestampDelay": 223499 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417aa9b7c8ba23219e921c8c24f084b211b31e9da2b176051da47b11bff8ff5c33212de575b81bb2e58ba5f1b8efa82a2605f4006b905e5e2cc82173eaf76a20add4", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "76765589790945662604547244204216214155946252006571676315847820028747638911777", + "20759498631951024433205069293438925811645138406748362097890303052587796049364" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17266, + "blockTimestampDelay": 47869 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc2e0a2c2d27894539cfe61cf1aa3dce6fa4cc0182d8a4f96446b30c16dcdb4280", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "20824364399678545662833682292547392236236046121352715060387808748443780465280" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8422, + "blockTimestampDelay": 175942 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6fab0000000000000000000000000000000000000000000000000000000000080000861226f42b4f83fda125862408777203fcf059cc4d6afa3d8b5f14cbd0503cba", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "524288", + "60641993806473011143834861665095605796555276187455692014587155889705714728122" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 5058, + "blockTimestampDelay": 564562 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e500000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "262144", + "393216" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54349, + "blockTimestampDelay": 446424 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ad8117bd6793da9372ee7a9f184c1f229a994a23f82083eb6803cf5612a5e084994694c28b481c29ef6ab1024c7f7ad48917e7b3644de29036693dfa1f6557a0", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "78478209922765382613928019011452160112457201279089481808494135837808952467588", + "69328571831131295636312210863921518104963878476144420959825437715154096969632" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 356, + "blockTimestampDelay": 94684 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008042581378843437462327153970303678099387767205587" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26236, + "blockTimestampDelay": 172938 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fff514b534b61c375c439f68b334317ec7ad1c81896f2e7f7d9e2bf248e8b86bb80269a17e974e3f307c7b602e63a3a5f54ab7520e1ce48c185b85068b23a50c370000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0ce9ae7037dff0632bada0555a4b2a1709ee25a0f6d47ff213ef7dab06f13492", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "110853235481380273198257434098634459560730545434260276739156884901825263201208", + "1091259233017721395373144204062272118708516766005316865622853242594359839799", + "645326474426547203313410069153905908525362434349", + "5840633478355227696719452384365761985173515625270275222857093897003304301714" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 48302, + "blockTimestampDelay": 98481 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc82f34f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00009c3ade46c6a10c03646645dceced151803cfed4a76a69d888d9528938805d33e", + "dataAbiValues": { + "methodSignature": "handleSettleBondEscalation(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128329216", + "70664815604550041696416122873938953675815643014153596578083942850550877770558" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21405, + "blockTimestampDelay": 224071 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a4f11ce728964fd5cfe4e67e0a4108fd7bd12e31d80bee3e9fd7503b25943d86bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600002fbcb13722d80a133f1e093640349fcea5017c8025ac70c52fefa1f32bef4147", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "35764176285829964837988166432096626338604401112435149938249800147871318923371", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "21592094227161796483602757534726537598958165417486369280358722180410608927047" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30001, + "blockTimestampDelay": 418139 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e300000000000000000000000000000000000000000000000000000000000003a8", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23854, + "blockTimestampDelay": 283267 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57fffffffffffffffffffe3bda3d84c15b95fe7640319d8a5c26029388bb4c0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570815840224595780479919275071395757947099535303139655680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 132, + "blockTimestampDelay": 172800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57439c4dea175c1f4dc2283a0dca8df089ec1e32de1a71e6049937ba0ef888023b", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "30581126742740578579461185375868096517298438186402910784813700598662223626811" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27956, + "blockTimestampDelay": 447027 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d3179a67678bb838478c44926fbd26493474eb791516d81ee5baa3765643a7f0f13935c24452e2a5faa498fca2a6c4ae1b3a3c6a9976af2868354336a0b5eae4a3df8b40fb6fcf686f1659e51d90d962d5cbfd1a55d1a1db345acbb7978cd9bd61", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "10676003636853416453138572180884583936897901964655062312574559468487432466673", + "25876816044475934884764655838030328364254713960717807302331158298975447737507", + "101111805466560395134870514718984948651558312084779106319072364710585748274529" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 9230, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dc97ea50d8c074d187de7cfc88d0f1c34dc24db2642bef23ec1b88370e17145d67", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "68713240332555606262576304945776648453307986915064085044793172925635856981351" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12052, + "blockTimestampDelay": 19785 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f0000000000000000000000000000000000000000000006f05b59d3b200000000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "32768000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 3 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417aa92d06f9b187c43210def504095e8426544f54827af0094e5c47e1262e065b663a93985339d1aaaa5528eca3343f64826af8471fa3111ff7b1a1d067661f7a4c", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "76520427670687974472084713126552624256348516399009121051566372436541744503654", + "26494923045561211048191064476495620839647940608616973048585101859895222696524" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6938, + "blockTimestampDelay": 197916 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c745efa4f15675e1dc5e0820d8b61e4e1c3b2c7738498336617ce8c1e04c4745f79e0fd906e76d9087d90474287d3aa87bd7537e316bdda4a8d939805778b853ddd", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "42959665348027796296446623032871991309114884315911569472746230850572248178553", + "e0fd906e76d9087d90474287d3aa87bd7537e316bdda4a8d939805778b853ddd" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 100, + "blockTimestampDelay": 423478 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f2900000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000012000000005bb97848736b7142c96367d03991dd42df02a25e9fc88dfdc517b1f4ce28bc31fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83cfafea801b1496906d8ba69b3619acad07c602f5f5644c5546c0a5a1625c9e61db764de175bf41c23313c816c5b2dbc6935d8c395c4856ce1ad7fe38ed0f6", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "86400", + { + "accountingExtension": "0x0000000000000000000000000000000000010000", + "bondEscalationDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "bondSize": "77309411328", + "bondToken": "0x0000000000000000000000000000000000000001", + "disputeWindow": "104084459477994910024948624640243341651381141291966115158980558504594338926838", + "maxNumberOfEscalations": "41488166090894130137464127351763299761175392285857027714786127187107321003057", + "tyingBuffer": "112281329574643079738863202584985426034020956563149812400628300592423397369289" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 184, + "blockTimestampDelay": 524578 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d97e31ce94964032123e4969a0749e9aa014916f3250bf8d2d11218c2b83b7bc6000000000000000000000000dd92df5080374ff85078e1a74b8880cd00776ed60000000000000000000000000000000000000000000000000000000000000000b8a36831dc71f854fbe7d1b7ce3a553891cac7605d6efcc4d3c8b0472fa3db1dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5800000000000000000000000007109709ecfa91a80626ff3989d68f67f5b10a22d", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "68700513958072141403648763787816715343496857287170728137452284071883052907462", + { + "accountingExtension": "0xdd92Df5080374fF85078e1A74B8880cd00776eD6", + "bondSize": "83514279336752933740344099228515725376396365006849213236518003647240640650013", + "bondToken": "0x0000000000000000000000000000000000000000", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "disputeWindow": "645326474426547203313410069153905908525361570349" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25919, + "blockTimestampDelay": 101425 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x40605c3f0200410cca20c8fe9f5721a3f210c230ddaa45fafcbeb1bfbbf8b5311c7ce95300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004c7e5be381d4e135d9869c372ae5fdc127d572047db177eb937dab489b485956e200000000000000000000000000000000000000000000000000000000000003e59142690e4395ff8f7d36a51db819f9b2b627dd44624cc27af7881ae5d85dcdf200000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000003311cf3105300073b4d65bc6c7ad79013e5ef42b3eb910126db263e9ccd31784a0000000000000000000000000000000000000000000000000000000000640000f6108ad6f1a58aee925973e0ace713bf95f2451f67e85bd48bcfbe31548e84b91c3de217cef27beae2f3d56daa00263ccdcf504d93eb4333cfc73c4509f5099f0000000000000000000000000000000000000000000000000429d069189e0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab1fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e000100001c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c60000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed36ce748c92fc6e8c7054eecab7ad246cb86145f4440496f6f14134d2aec40099345a0e41980dc4640d7d762ba666217e6d2335cc66cf9205e468798481258f2fe0000000000000000000000000000000000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d100b4b43a80fecf041e66f27f63cd64cbeb745676ec606bab5bfbf3899cc19b73c381813101545d8fc28f8764c2ffa5e632ab2d55bad52d1355e873c7e7f0b09fbbb7144cb70eeda3d3734f9e6acc52eaaa4e71fa3aa5a9611a184c15f34667d8a20000000000000000000000000000000000000000000000000000000000000000380d9c3a02dbca81296453043d62e319d481e43707aaaada96af9359029428aad358e508346e35e1319cd1b4204bc2ae280a60efa60b5803373ae7fa2a728501a3dab0be6f911f13d935d9984ba3bdd1d59d56f0130475ed4366bbcc0ccb60ad00000000000000000000000000000000000000000000000000000000000003e8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000309dff374c6182bc7cc7594dec4619e9906308720653134fe85cde855a6d6bdfaa9d82c04697a26a2f2fc89c44372efb5e17daff2e86a43e551c704094abe3499ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbf37c00ffffffffffffffffffffffffffffffffffffffffffffe2db4d2053ae00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffec7800008c71842425c9851ef1fa1dac96fc89fac5b0a10086cfc789214bb9becf0570f74512d139774ad42286d555483a293074206770b602fb92c3af103dd07c60628b00000000000000000000000000000000000000000000000000000000000200020000000000000000000000000000000000000000000000000000000000093a80a10582f7dddd6ab3bb4bdd86be89aea4e2e7aba5ae91d125479d7a686d2c8b940000000000000000000000000000000000000000000000000000000000040000ec19fbf56c5e92f947dbc238c0da09f2fe83c31af46488e2a8cf6bf2976d77b370488e73d98a690a6a8abad72db885b7dae08dfdcca872b439b328b25759bf35000000000000000000000000000000000000000000000000000000000007ff9c000000000000000000000000000000000000000000000000000000a1b01d4b1ce614afd329253d5e4eec4dd3821b5fc692422bae9e1789c1b87ebedec11e9cda2e7d495c6ffa192ca0bb444aeccb50689c3623de6949f46854405bc966bcb6770000000000000000000000000000000000000000000000000000000000070000a4e0e70cede2c12be8a82c7bb0002b8eb6149b9c3ef7c6119916d7e857296399d854b911d10aec4be4765a7c0a482f821a05ebb500ef1254db1c40fd93b9fea61dba1c25c787be027fd2e3494b36e6d331be0f0aaa8cf3d6cd2ae8fd250dd7abcfa5e5962ef475853cfa87bc09f9191e602d950155da341dde817e11b764cc2095f022d0d7e91d3c9a4064a7f8205c5f4e170e666597e049b427dc16d073077500000000000000000000000000000000000000000000000000000000000000030000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d872a7123006ff99b455a4921c98befc60fe0c67031de33c9f1c2145bb2613bbc2ea807ae15d2b865a7db6f945121113ed550d280408d1e329be213f1ed765870ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b00ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3a6a2b6b51da8bc33f4de9b5693dd734fa7cbb006ea5213e8e3e8e55e28ec0b65fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff48b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c794466b32dfa891ce64514d00c97ab1123e8400ee548d3f8334b220605190e200000000000000000000000000000000000000000000000000038d7ea4c6800048d3c657cd06a6172cb3c55c578d3a11d4476ac4cec723e3d4d655d02555f4f0265fa64c5d2062e6f10eb554c57cbe56bc6acbd8c12adca1149b04659538139d60fa47b00c655cdb0746da2c7c1cd853fb0af50da03b21b860d3926c7d2076fb896ec62efa3e29fb347e9b04144313f08bf6c48d1cceb29e16e564267c2fc0b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed30000000000000000000000000000000000000000000000000000000000000000d5529cc29e90ca039d4efb38d951f7a223e64e786259b7d5ae0ba6abc28fcec000000000000000000000000000000000000000000000000000000000000003e8e36144b154dde00cc04c22ccc9f4e1c90f42f827d07dc6d0e8abc802539e6f73b626a2dfff01ab7170b9b9fb0dfedee8182d02c7f2b715ee32d21387ac488e97000000000000000000000000000000000000000000000000000000000000001d5288eea52b1384bbd194e84bdced3db4535acc1e4425f62d9f086423c1a080a2ffacaabbee7f158c60ecd0beb300d4ad2b3d6ef1ae7b077b7388a60235ad01d3b93a28878293b15b658497cc6c6d0ea6ecf9ee07217f0c9aa5f8b0892a9eb0b46bc461e6566d1e29af3ce8205223547d7d1591d6c983d4e71f516a689f2dd4d52b3128f618d8c77ac9b410c634ccba8b771ee6fcb33e1262ce574faadc0739ffcfb0305d23a092552aa1f8162b86e86028572ff2e1a5e606fb2fdc27f770a96dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff900004af955b5eabc23b72fb36631df6b6a6b8056fd0f84ee1a44f070cad12e02f57751e6631f7d05772a00431eb187afcece2b1d414a5fb6e13fb716ad60eaa96d2c0000000000000000000000000000000000000000000000000000000000030000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800009f03c25c5931ada832c74234efe3a7e5db174aff54c60d89d95b5eb7a1f125724fbc80f84c596e0da4001e1358a01b014a23caaa3a4c93e5f88620a6dd815bb50000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000fffe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000000000000000000000000000000000000000050000ab50615387eec32faea1a92ebacb034b669d9b64caaa08f4e8b895e8923ff48c00000000000000000000000000000000000000000000000000000000000d2f008d4df9f3e5302865d5a2c3e35190e52cb892cd96d49288d7a5b569c9d4f28b94da805defbad575e35f256337a84606c33c2f2b33f0e78eeaef1efe5e3bcd3884662363efd8563acc5f21df0b8c49b32b3a8349a85ebd52d151c66429e2ba6fe20000000000000000000000000000000000000000000000000000000000020000500fcf757a48689b990676816e3bc221ef2b31ed3d4db7c7f6931cd01a29659f7ecd983caca3e954df272d682fb68a8b1ff7e5ee2516051735f3de364bc6bb3b3f55739d9e53abe1dbc67448fcaeadc645a202234d964e460efc32ffc3b94576ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ba30927ed70a0112a623136ef66fb5bc60df1fc7b4e412700bae551a900a1a5ccf73baa7a51456e5e773ff32608a06d3f9adaf6d074d5a76dd8e887a28722023", + "dataAbiValues": { + "methodSignature": "handleAmendEpoch(uint256,uint256[],uint256[])", + "inputValues": [ + "905074655485004108607337249943135160874717547047819677943667362413800122707", + [ + "57153772201059091427674702095160085020575969444899274695515814120981387630306", + "997", + "65702700018772295285641744305422253124998005341393525800568053425846215364082", + "393216", + "3", + "22214478862856196402235137118502809823820432438836253392278385596944989911114", + "6553600", + "111298188540392792167251238172853782003803079965936529581948532548817759667385", + "12774097867830172567665155031478904706813822746602401712704343890851429419423", + "300000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "77194726158210796949047323339125271902179989777093709359638389338608753093297", + "115792089237316195423570985008687907853269984665640564039457084007913129639937", + "196316340530931592175921944526990946203053766319513217569067355699179974", + "0", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "49258431668674329985233305063018037235645410780116477310508292538408990935443", + "31493856368346246194720234575958573204098127017253979057082649670744714834686", + "32", + "115792089237316195423570985008687907853269984665640564039457584007913128775936", + "81734748995643829897749293629050790648292396040940111871005096764596803040195", + "58576618960013436577985191491624867541201923372516262339792817517247239069627", + "82809117699998044416903094946931632162775816286453799866195757321946017552546", + "0", + "25353566768913084137975124568004511822114351841878927897817779161144602405034", + "95595074313884271267459208754562795167546826447980276332141791768385412039937", + "74113386820690374841632175234754098493152877767692964222255803744873003835565", + "1000", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "458752", + "3", + "4466502805272837827542281810375039010959250724098765293399392848083032653306", + "76822814172351236704381957085694141751880008096938687989110002656304911234201", + "115792089237316195423570985008687907853269984665640564039457584007912524839936", + "115792089237316195423570985008687907853269984665640563901831984007913129639936", + "115792089237316195423570985008687907853269984665640564039457584007912801959936", + "63524364525032563486099473209578151861273580307383532114660109137943770525943", + "31242833813677776401571601700389063228100765957093565970677171678370104107659", + "131074", + "604800", + "72832106766726792058423032174356857004028480144157507654636072930991491812244", + "262144", + "106791742397202938182777462122874042302016213385485331829509551220079480108979", + "50787235201274696145106251269836276692246095160314164782915832401458227691317", + "524188", + "694444444444", + "104068505613939395620673537148501655846091818995213599622855705840613209316570", + "21027753237518509859013298513333261540195089137345481702615930526600716400247", + "458752", + "74576675562143808956693745165501454248914564230543746207844979903835350328217", + "97849267750834936202069277582968220853718105898992477735441665874625100906150", + "13445900430392228723257928073146961807097387790884559974765581692820184225707", + "93921873971274920962213762017475619213210183931518380568421618927139721366560", + "67818898024236242084042521021667633473967346330859660123835332080677218879349", + "3", + "645326474426547203313410069153905908525362434349", + "61137222976443039109911608729104452804191070247950560134441070334422814899132", + "21103274347266413479703070695065142448029868551910200139833503007741245282416", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "75371423090025251448523763095978950134991139729190694438513593473478234475365", + "115792089237316195423570985008687907853269984665640564039457584007913128889088", + "115792089237316195423570985008687907853269984665640564039457584007913129639680", + "90272236245973403234983831901481661623806340525386389709016894470763693838562", + "1000000000000000", + "32940698741547198576231977008498678030316414160745073629678995680899735352560", + "17356886465974949297740906028401751349449125040675107917178624515727185941405", + "43864240000434850618035279849298712645569081110998933520835965174566659061499", + "62162581245320974403036203567003251911058458786240641759078759572784452452532", + "115792089237316195423570985008687907853269984665640564039457584007913129639926", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "0", + "96488600126906225865587874648621364254506924508256347287845454729728719048384", + "1000", + "102846874893284621945828007270689593150392822824032189361788766148864593784691", + "82389202752447669384498899468905313790058128858245263457757434057410801602199" + ], + [ + "37331591853195898332646914233173156955501937159015030398665417168470977577122", + "115644852447380397106580820209472115954010305551228447193779313880069065998803", + "83780633840859455039201963591578546882784623668416050544233602266931409105076", + "48744452502391184566360786457904555535403359862785255399679643279797858981077", + "19536310699872020071375096717549843195520823039636054431981813458089300933119", + "93940058534988809565601868948434030179172844667554385226371768320462873995629", + "115792089237316195423570985008687907853269984665640564039457584007913129181184", + "33911687267201826747227228408667605311127959699127589037438593522296594560375", + "37044399681956569630066473435830066290752459357848831750171393433806970645804", + "196608", + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "71924384894433292096989519172037299445580544500513898576006906343017514345842", + "36065772403896067072996942935610603333651879905849624192774582834877652097973", + "196608", + "65534", + "645326474426547203313410069153905908525362434349", + "327680", + "77487516594307415765035774972120118522131374758824921318574400461875517060236", + "864000", + "63913883984472213085539992323673314504226457836791357038462740680155449166740", + "98831005740957109638021708781159126811871769049869769667432650266880395524228", + "46198439941858928614091063460399623917777648473584188038534412802191458463714", + "131072", + "36212962421318419301993835762131349070021499536150148004768772560220653708703", + "57354673270993789344352727846460728222299326903621920205323618921321677110075", + "28646689411467215300358786927112113082682434223951368508192384407000789370230", + "115792089237316195423570985008687907853269984665640564039457584007913129639904", + "84216009570163080362684513090370046181896401684199635219638541266786313706076", + "93833235313702148338103348269210324456108000960628966079234547430264346386467" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20470, + "blockTimestampDelay": 408021 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8529, + "blockTimestampDelay": 184502 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001813512a62e6c213f6d51f779f18e2c86e0d00fe76b8307ab550d59bb26dd317a0000000000000000000000000000000000000000000000000000000000000027416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "86400", + { + "accountingExtension": "0x0000000000000000000000000000000000000001", + "chainId": "Address: low-level delegate call failed", + "epoch": "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "paymentAmount": "58442129073348854913675807273523946543963145606711603520462692937339565322618" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15158, + "blockTimestampDelay": 295089 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215449ba16be31dc1d7de22fb93baba8df1958226e92a715719a8538005fae2aa18", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "31032249088497022257228939088440837287694462762632281658808369736101373585944" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20983, + "blockTimestampDelay": 360615 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b13740000000000000000000000000000000000000000000000000000000000008f8000000000000000000000000000000000000000000000000000000000000000404d995b471c561b6a40db52ed1b0514237c79ca6e737325db49d7a7562fad4da00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000213dc43012f326a0b2168c94fe01cabfdb0135490000000000000000000000000000000000000000000000000000000000055f00000000000000000000000000000000000000000000000000000000000000005bd25121e6f17a79669a63f3ee85a9e50f9718b00dc9ba49127d4896b0958069313f71ea11b70ef3e5c4e3d9124d325233b79b1ea36acb3e29610450877a8edf6525d7e8b05efb2c65283bf8333ffffa1213857d2b92e272a29e0fcb0000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "36736", + { + "accountingExtension": "0x213Dc43012F326A0B2168c94FE01cabFDB013549", + "chainId": "\ufffdQ!\ufffd\ufffdzyf\ufffdc\ufffd\ufffd\u000f\ufffd\u0018\ufffd\rɺI\u0012}H\ufffd\ufffd\ufffd\ufffdi1?q\ufffd\u0011\ufffd\u000e\ufffd\ufffd\ufffd\ufffd\ufffd\u0012M2R3\ufffd\ufffd\u001e\ufffdj\ufffd\u003e)a\u0004P\ufffdz\ufffd\ufffde%\ufffd\ufffd\ufffd^\ufffd,e(;\ufffd3?\ufffd\ufffd\u0012\u0013\ufffd}+\ufffd\ufffdr\ufffd\ufffd\u000f\ufffd", + "epoch": "35099046917880542585164555430508038868065917922440903797197539250676616220064", + "paymentAmount": "352000" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 56280, + "blockTimestampDelay": 458752 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129508864", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14098, + "blockTimestampDelay": 569046 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9ccc48e72a465398a458fa410f65630310cd37dc76294bc92537e2601e96c60ebd10000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "88905001836693742325507352277997560608298154628648216827782397487703371344849", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129574400" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c57f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003c80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000da53940b00458626f6289ddf0adfdfa413fab300fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00000000000000000000000000000000000000000000000000000000000000000031213c9412f9e5d2844620a737afabe7451705dc25ae97046b27367c0d73121c377e07f41a8682748c3637fadc5e985348d4000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035135", + { + "accountingExtension": "0xdA53940b00458626F6289Ddf0aDfDfA413fAB300", + "chainId": "!\u003c\ufffd\u0012\ufffd\ufffd҄F \ufffd7\ufffd\ufffd\ufffdE\u0017\u0005\ufffd%\ufffd\ufffd\u0004k'6|\rs\u0012\u001c7~\u0007\ufffd\u001a\ufffd\ufffdt\ufffd67\ufffd\ufffd^\ufffdSH\ufffd", + "epoch": "968", + "paymentAmount": "115792089237316195423570985008687907853269984665640564039457584007913129246720" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 282868 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c27120e574151e78e43d42b5f1d2755a6c8c1f3465ced2014824c5e3c7e4eeba9444fc74ee0c24ebdba3e62450bb6d404762453c8f86c21f2373a1ba170f3ecf81dac04840e25f58b0a6d622417c093c48e05fa9efa5bddc843219fe247671e0087", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "8166969346359948639484006387253416172301236988256769726962054929875661990212", + "36084861999675023071727212187156050330492265038665057332289628950360509708317", + "77805788756535527407772768649618221004754717959448356492205955344147878379655" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 32, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff8e109937a0c12587ee4666cf7eb8f9a914f1385f133128a7bbf4f5eff743301500000000000000000000000000000000000000000000000000000000000546005172646d987a680e04dd6a045e2c8e98a680e2b9c41a2d98c3072682e7a7efc25e43b123c01ac311bee46cc3bfa5a0be50d6b4473163049ec4c37d3a1caf1b11", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "64257751518777829519648785807987822488615391450098951710757499941744441241621", + "345600", + "36839454429956002479784537352517879993063816426425600860733833535606361681858", + "42637009093099676781532913644885930180275839542941773954417676940607658859281" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18765, + "blockTimestampDelay": 352717 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25275, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf21572dba7dbe09c3bbe6a88d23c3bd9acfe205d1d60aefecc0db6a8499e751e9815", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "51951762765201292588978808218288335040492006071994363203642941846922903590933" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 42594, + "blockTimestampDelay": 143245 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655388924a9c0b4fab8a3a6823ac564a32fb78cfbcc473b96e55fbeebc0eb71d773", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "25571830607931438209766452591287454872650721757204844895931688485804152313715" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53210, + "blockTimestampDelay": 360623 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfa7e5b450595c21a14259f758b64ec4381302d527c203a49e4b9c1e83094266dd6b48dae36a7e33922c16e094ce88a626bf6eaa1d596dd330476320c9b67cb28dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "75942098171788587147868381348791675977767975212740010787554276083613701400285", + "48526198498900060195577435149830061143198857828146295147538220227829339828877", + "115792089237316195423570985008687907853269984665640564039457584007913129377792" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14516, + "blockTimestampDelay": 162774 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000fffffffffffffffffffffff80d5614d5661c22f91420df44ee9eab0b97e74ad62bba341ead94025d38af6eca293db8770eb1b32ba67b7363e9f3d6803df81b0d0000000000000000000000000000000000000000000000000000000000000024", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "115792089237316195423570984997072031313592135005999182794687277654456605821654", + "19778445761017581235509319627811875743548082417220173652855107228865444453133", + "36" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 258, + "blockTimestampDelay": 101436 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 8, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000010000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000000000000000000000000000000000000000000000000000000000000006ffeeb3fd82fd57624ae9fddc080413e063c59aebfdd9e86aa1d14012b23cc42c3909a33c5245d7d9c850d37caf97974d05edd8cfe363dd7336cd23498b53ce1fac34000000000000000000000000000000000000000000000000000000000000003c080aa8886e229c59ad31a48e8790c532b08554e63f60fd65922b33e3589dd8b96aa104212b8f7bc224e863f0e8c252064d7229b15bbdbbe21c0b370fb52ecf016ae7f838205c29fb37c80991959f4df295b815ab130ddaf950ec1bec40be1244219653dcfedcb982b35ad7871ca540ce120b5cd731953fc8b91d4c4dc6f0e3d4d6f3303d5fde3a31146530161a95a9e5730847bb0e1adc263d276fd57bd0e9d5a1cc4a17639fc1be64e2f04f022fe314e4eb945526ac1e64f07770f1ade7d0db6c94d83e4ccac8e80511cfc9d681f3d91507412e8b07c2e7c8d526c804bea9d13570a7586321df39a35efc4800cfe6f84e57e37881266b4981bf8047828149e34fffc8ffbda96ca0340d3f9a352599a6dd40c1b5e04a6df65851467da3e99955756f07edf77dc0a01f914c598c84ffcc8992a824b7692ecadd637fd191d1ed0c455a2e9e136425ea6ed45a40080c391f2f2deb3b8048cfba079bbcfe913a6ef84d1e680ee7ba81fd7eaff5fa2094ed84e21f7f8f41e16193838b0e4c0ca6197ae2edffcfd0479da46a691dd1169eba1ff20b64d16f5124b8601d74e5e1320d6a8ae86f61d0b2921f586a223eed1d260417e9593c5fe94fe9c7c3e79e094cca39a2efac7e2bcd9829cb27ab0e73c400c60da9115aeb6f19875c4cd2353da0a35d33ecffa467bb2268d77ad6d71dd9bcb7b024f5ff4cd6a4007585993d5ea7df79255473ed437ad85ba26f6d6baec88ce97da00bcf30683c9c13d2412347ea64ac677e6040592518afb3ded7e96495db0cdf7d26a4975b0d955fc54b5bd4ed185f739cc30f03a7f23a25a5174766f8d7fd93b39c836e9c8afd3dd24301ff3dc6ba307623d89316ee4ce81d67849775b6a630da2070162aeb4c72585d93e0317c67b28a9a3a12d3f3fdeabf90aeb820806d3c6fed80f683055994f279e04b7d917f52c54497abed020dfd879d9e39b05bf9b57cabac7a801afb2a0241460b62bb477f69b395ce79330f3ac1b16009901a01e5a6a460f75039dea573505eba6ad0f70eb27909a646195dc69c0f5ca8a766100f3be920285377868bbaeadebcd299fe8c0427854ae7435ba56c29e52895feefb622ecc2945098f01cbdda3630343062eb1e37c3d5a4e6ae57229bba8c4fea1628c1ba448bc5cdf625c231047e4801079dd944f6f545e8919a5d5551d29a15bde1c5371198736dbb662280b7843d38d45d0dce2926c6fb2a8b59a8b7845c6c2d964a5aa85d684263c4b83dc4c7171da1e59e37c80155e035755661f7634ccd7b55a898d31544c8468e6f488bdede21dcc9265aa8818e56017d605c1dd0743ea6e2830c408cc25b6552d6014b618f130869b725292a8377fd7a13212306a1eca6e7cf0e7a8cde94bc2a8b3a95aecc11f627c13d2c7f480c3855b8cbd276a30a3fda895db68e33faf65b1bcd52b09bcfa04b9cb8b5f72afe3c9bde9ead1c97eb062e7112bc9aeca5c2bbe3ceec1ae37d16e29361c16456d264bda7323cc19e74ab7d7ebca395dfcb5bbf2ab0baad7794bba7db130667d95c3d572935aec28dc8b9f511a602bf74215c24248625d15b17ba40c7a58043e38ced1995d2154c366bc0be0e2eb305dd9eb025f96255be97a43631c8fadce211bafc2a31de41868fc1a4f2114e6a94cb7247ef7a7de850584011d18228e6e4bcdd035f52ec239685e26f7e641e9e709f65c50fcce5127abc58626ca96a4c1f5d7676f8e6bd1dabd05ad51ae7bbda1fc57e607b0e8d65071ea96dd51dd971e5934ba0a695986eb01879d508dbb993c92579d9b28574782cd7e0b758d48c6eb6a6c277838e4d71679e07e68fb0f85be1c4c4c1fe1d834de1cecdaa5d2a4f5d6a7d28fde6e6e96b919af9ad18de545be180fc12f3ccfcb9c7bde224c1c74304938d515f9cdc98040161272295aeec9689de3f42cd70e2dddd290ad657403cb197b4fd042e8b60dde8afc62b97f16b1feaffbab7823c8ec40a5f49fad5dba3355b47e16535bf0d4d0ac71372d1baaa0bf9b807572fcd8e70c4205736d8077a465d6e4d070f7d5f012f24141d1a4ef2e87e8896da73960cf26a54c6038c03a022069b8db8a3f4022289b2ee17a7411ac2c42b9f7f37335c0c0075d075fb276fc33c1f3f10462378fcd112eb273ee9bd511eb3f30f58b6f1edb2df4e57d24c67070dee36cf818164bae2dec3717b552c96ab42019d30f69484ea9a4dc68bda97dcba0fc6a093b5ba8e1e15e165fa671b83bef8b7b0cd614c1106a996895e97839afa6657e0febc0b48b129528ebe80368d5f23debd463575f69b7ed8426dc3fa665f13b9c08c8c05a1d4c31b41732523d2b943b8eee9b43a74a4cd533b781512468954ceec8c560e2522373a0c0a1b0e090af4cbaf9c4b28b2e30023693ebef35cdd1ada0dd7102e3ae0672b85fd5b7126b24cc4046a74abe14e7a2b592b1f463cb7110964aac14bb7e710ffe434b5dbbbf05edc9bb7a5c827fb36ab1799350c43a72fd170226bc9b9fffaa3744056aa18c854e975f117cc594be842217b1b451aea7ca191900a670f29acf18cb968865df37f4458ba9e720ed946a0ca1db4531403101cd0da03396348f9daf3cdca7b849d0ca2f15ee9fa5363f7fa7504ade218503f485f0cb3a1bac183cbae7268eeeef95c5a6797176ffa49a2cb7da742f9ad1cc3b7090cf4f59d8d046fb365198deead59f9514815d7c4494d8614", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "65536", + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "458734", + "81411916260887808935637274574103901471821894122785804973774955777497682950409", + "73833572969127614450188660123107505555423378693848513117239642789239664389172" + ], + [ + "080aa8886e229c59ad31a48e8790c532b08554e63f60fd65922b33e3589dd8b9", + "6aa104212b8f7bc224e863f0e8c252064d7229b15bbdbbe21c0b370fb52ecf01", + "6ae7f838205c29fb37c80991959f4df295b815ab130ddaf950ec1bec40be1244", + "219653dcfedcb982b35ad7871ca540ce120b5cd731953fc8b91d4c4dc6f0e3d4", + "d6f3303d5fde3a31146530161a95a9e5730847bb0e1adc263d276fd57bd0e9d5", + "a1cc4a17639fc1be64e2f04f022fe314e4eb945526ac1e64f07770f1ade7d0db", + "6c94d83e4ccac8e80511cfc9d681f3d91507412e8b07c2e7c8d526c804bea9d1", + "3570a7586321df39a35efc4800cfe6f84e57e37881266b4981bf8047828149e3", + "4fffc8ffbda96ca0340d3f9a352599a6dd40c1b5e04a6df65851467da3e99955", + "756f07edf77dc0a01f914c598c84ffcc8992a824b7692ecadd637fd191d1ed0c", + "455a2e9e136425ea6ed45a40080c391f2f2deb3b8048cfba079bbcfe913a6ef8", + "4d1e680ee7ba81fd7eaff5fa2094ed84e21f7f8f41e16193838b0e4c0ca6197a", + "e2edffcfd0479da46a691dd1169eba1ff20b64d16f5124b8601d74e5e1320d6a", + "8ae86f61d0b2921f586a223eed1d260417e9593c5fe94fe9c7c3e79e094cca39", + "a2efac7e2bcd9829cb27ab0e73c400c60da9115aeb6f19875c4cd2353da0a35d", + "33ecffa467bb2268d77ad6d71dd9bcb7b024f5ff4cd6a4007585993d5ea7df79", + "255473ed437ad85ba26f6d6baec88ce97da00bcf30683c9c13d2412347ea64ac", + "677e6040592518afb3ded7e96495db0cdf7d26a4975b0d955fc54b5bd4ed185f", + "739cc30f03a7f23a25a5174766f8d7fd93b39c836e9c8afd3dd24301ff3dc6ba", + "307623d89316ee4ce81d67849775b6a630da2070162aeb4c72585d93e0317c67", + "b28a9a3a12d3f3fdeabf90aeb820806d3c6fed80f683055994f279e04b7d917f", + "52c54497abed020dfd879d9e39b05bf9b57cabac7a801afb2a0241460b62bb47", + "7f69b395ce79330f3ac1b16009901a01e5a6a460f75039dea573505eba6ad0f7", + "0eb27909a646195dc69c0f5ca8a766100f3be920285377868bbaeadebcd299fe", + "8c0427854ae7435ba56c29e52895feefb622ecc2945098f01cbdda3630343062", + "eb1e37c3d5a4e6ae57229bba8c4fea1628c1ba448bc5cdf625c231047e480107", + "9dd944f6f545e8919a5d5551d29a15bde1c5371198736dbb662280b7843d38d4", + "5d0dce2926c6fb2a8b59a8b7845c6c2d964a5aa85d684263c4b83dc4c7171da1", + "e59e37c80155e035755661f7634ccd7b55a898d31544c8468e6f488bdede21dc", + "c9265aa8818e56017d605c1dd0743ea6e2830c408cc25b6552d6014b618f1308", + "69b725292a8377fd7a13212306a1eca6e7cf0e7a8cde94bc2a8b3a95aecc11f6", + "27c13d2c7f480c3855b8cbd276a30a3fda895db68e33faf65b1bcd52b09bcfa0", + "4b9cb8b5f72afe3c9bde9ead1c97eb062e7112bc9aeca5c2bbe3ceec1ae37d16", + "e29361c16456d264bda7323cc19e74ab7d7ebca395dfcb5bbf2ab0baad7794bb", + "a7db130667d95c3d572935aec28dc8b9f511a602bf74215c24248625d15b17ba", + "40c7a58043e38ced1995d2154c366bc0be0e2eb305dd9eb025f96255be97a436", + "31c8fadce211bafc2a31de41868fc1a4f2114e6a94cb7247ef7a7de850584011", + "d18228e6e4bcdd035f52ec239685e26f7e641e9e709f65c50fcce5127abc5862", + "6ca96a4c1f5d7676f8e6bd1dabd05ad51ae7bbda1fc57e607b0e8d65071ea96d", + "d51dd971e5934ba0a695986eb01879d508dbb993c92579d9b28574782cd7e0b7", + "58d48c6eb6a6c277838e4d71679e07e68fb0f85be1c4c4c1fe1d834de1cecdaa", + "5d2a4f5d6a7d28fde6e6e96b919af9ad18de545be180fc12f3ccfcb9c7bde224", + "c1c74304938d515f9cdc98040161272295aeec9689de3f42cd70e2dddd290ad6", + "57403cb197b4fd042e8b60dde8afc62b97f16b1feaffbab7823c8ec40a5f49fa", + "d5dba3355b47e16535bf0d4d0ac71372d1baaa0bf9b807572fcd8e70c4205736", + "d8077a465d6e4d070f7d5f012f24141d1a4ef2e87e8896da73960cf26a54c603", + "8c03a022069b8db8a3f4022289b2ee17a7411ac2c42b9f7f37335c0c0075d075", + "fb276fc33c1f3f10462378fcd112eb273ee9bd511eb3f30f58b6f1edb2df4e57", + "d24c67070dee36cf818164bae2dec3717b552c96ab42019d30f69484ea9a4dc6", + "8bda97dcba0fc6a093b5ba8e1e15e165fa671b83bef8b7b0cd614c1106a99689", + "5e97839afa6657e0febc0b48b129528ebe80368d5f23debd463575f69b7ed842", + "6dc3fa665f13b9c08c8c05a1d4c31b41732523d2b943b8eee9b43a74a4cd533b", + "781512468954ceec8c560e2522373a0c0a1b0e090af4cbaf9c4b28b2e3002369", + "3ebef35cdd1ada0dd7102e3ae0672b85fd5b7126b24cc4046a74abe14e7a2b59", + "2b1f463cb7110964aac14bb7e710ffe434b5dbbbf05edc9bb7a5c827fb36ab17", + "99350c43a72fd170226bc9b9fffaa3744056aa18c854e975f117cc594be84221", + "7b1b451aea7ca191900a670f29acf18cb968865df37f4458ba9e720ed946a0ca", + "1db4531403101cd0da03396348f9daf3cdca7b849d0ca2f15ee9fa5363f7fa75", + "04ade218503f485f0cb3a1bac183cbae7268eeeef95c5a6797176ffa49a2cb7d", + "a742f9ad1cc3b7090cf4f59d8d046fb365198deead59f9514815d7c4494d8614" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 10110, + "blockTimestampDelay": 42400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf800000000000000000000000000000000000000000000000000000000000000fe", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "254" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 31534, + "blockTimestampDelay": 502997 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 8, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c44989b83856711dd6e2fff2fb4f6f9c007bb9771f1755a26b351a1eb3dfa452d159151dc355d1937bfc43323997c9d735e9178a3cf3e993e7b764f4bed67935ce4cec7893aedcb0a69d085a606cdee3b9838daf3fefc61d38b0f14ecdec26e33aa460f9421d6b80b366831f81a22a3a22ebd80e834740e6cd645da1790063ab1669", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "62292348944090115746545714663996537181369460052517339629743735497958525948249", + "9551156539331198657207388647210792475747533930906137829599958395912405241420", + "106958873184409346177772424067264194416183043741641706881530640155496522398372", + "43862434691542092146243210499299989128919851476248082112521904879876197521001" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27735, + "blockTimestampDelay": 575806 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 20 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803638838000-b6d2204e-b85e-4a35-937c-c1bc3c2af34d.json b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803638838000-b6d2204e-b85e-4a35-937c-c1bc3c2af34d.json new file mode 100755 index 0000000..8201846 --- /dev/null +++ b/test/invariants/fuzz/corpus/call_sequences/mutable/1731277803638838000-b6d2204e-b85e-4a35-937c-c1bc3c2af34d.json @@ -0,0 +1,2161 @@ +[ + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000d2f000ffffc0000000000000000000000000000000000000000000000000000000000181dc31bc03ad9bc8a966de91dfc8c49b929f6d5fd44a9c22a7f5bb37cebfc106ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8ee8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b825bc2cfc37067e378b4feef3f3411136744d0b2851c161c601669654cf27afe610000000000000000000000000000000000000000000000000000000000000000578750b27e877a957d33dc50d914b1caf972efffa4bb78b85e66dd813a864ca4039e696f94058cfd274de97421f65916ac135f4d55083d357b9c1f34820c9376000000000000000000000000000000000000000000000000000000000003fffe000000000000000000000000000000000000000000000000000000000000000167e6a528e0202cf23a36eacf513eee303475d3e4c983b2ae2d616b11c440f70a4ac07813439b9213b22d4d86340307a2982de60c241368ad288dfea742b6eb5efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9686c2d73382b1edfa908bcaeb6b9ac0073f469887a9150c80831642e47e35a614c1bffffffffffffffffffffffffffffffffffffffffffffe48e5eb33a3a7f000000104a13a90c13653470268ea78892361e7e91e706d859aabaaf45ddd18c956640809a37cc7335cdf29b7d988dc8c05e2c1899ad1795364e6fa667088b49487472000000000000000000000000000000000000000000000000000000000000fff6fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000329c51ac594cf93000000000000000000000000000000000000000000000000000000000076a700a77a4c48695a0407441e86efc633aee092d2ebd99c87fdfeebcd904fe33e086d000000000000000000000000000000000000000000000000000000000000001d563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd0633ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21bf8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b4498bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef328d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad820824094c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cbba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c389436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160eed276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f6617237058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c265f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a219fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "13824000", + "115791647525550000827488589184312722123641027794666345134718053606362806484993", + "58737407075920930096693749632210245280794127876199190949253348332199714210054", + "115792089237316195423570985008687907853269984665640564039457584007913128431336", + "115792089237316195423570985008687907853269984665640564039457584007913129380738", + "41504671482165347584846103287222174319130579613222615088745194098566077546081", + "0", + "39590299132392589184737138068833640165131826767556478003143025413084726840484", + "1636828073493779560152621491074002847609709387720111137750911676859097584502", + "262142", + "1", + "46995738119123743123282428161140493004285235666026628953647859202250191730442", + "33811214160519685654400438720767591502827986970858420988841187408488311483230", + "115792089237316195423570985008687907853269984665640564039457584007913129207916", + "20557653259021005890251421269967042420225955023564768794272035576696478452763", + "115792089237316195423570985008687907853269984665640563909857584007913129639936", + "7367887950809164700104084563884591449786965425123545364576065505479275931200", + "58168524174645209900719041489934173752247098791866719219864340874379345294450", + "65526", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "227929974933606291", + "7776000", + "75752327540241786815348607290604056680494387521335977257182003214564422715501" + ], + [ + "563a284729689d3dbbedfcb1807c5db085b7e9a9717c8539e2f1bc550658d2fe", + "27f3be66616960581b372dfd387b3e126ed97737b524aec390b7978d8deace4a", + "9e6fec2d7c932f133a655a7264e0b707b787dddb8f368a77967dbad777ebfd06", + "33ee9b04284300aa9f5468a600f8553d27e9a4f3c35b14c7a412dbd4ed695865", + "d5d6866ffb684491364a0853403f689144f5664f5d50de1b1a30d683ff29f21b", + "f8043ffd64ea70a52a9544b16e9a9d2e23317648b32b32985d47237a08f48ee1", + "c365845a722e7b5881da7289b701561786789ecf720dfd0893308cf426144b44", + "98bb79fa1003a235f40fdd4017740e90ba535106f3f7b3280297490913f15a01", + "108e9532566cec33ecda965e50478a698ea03051fbf0bbcfa4e41157a628ef32", + "8d5342deffedf1eb4b1ec4e368f92684579fe44242acf15d7b77202fa132d2ea", + "94156b1ceb81e3538c176e7b79ef40ba43500306f484d1ca1b5f6e8ad8208240", + "94c2949304cd969b5661cff34ece28aab6ca0f3eb707dc756ae848252d66c44a", + "94d6e48f6310ca950084adba5e901d8c6451907a011ab58d9ab09d5509d6e056", + "cd794f6fb32ba155e14db1fa911bc709351e9f4b415043811455ffa00ae96291", + "d8c581a922d52cd477658fcc2e2ca1f954f274ed2cd833a98e6d1d4455581f9d", + "9f6d2c44e7c920946e34ab248efbc49a1fa862bc2cad544c49509ce428ac4874", + "ae24b8ddc161aa22bbc8beb3c18f1920091767e3db7422b42c2c310498e8c6cb", + "ba3abbe404813f14105b0a5b08c2bfc6aec732cbacd87310a6b7d3a8b5b4a8c3", + "89436d2b9b4dda11f7c2a5c1ca8fb20cba7512c884b100fa143fc24dc6c160ee", + "d276132efb5a4c6e31337be2b859bcd3a68267c1a5bce373d2ce245618092a99", + "fe67dcb902ce90bcb60acb01d154181ae9da98b92985551598368402d752bbce", + "3d7562c331efe40ca28d9ff51ff3748be2f4c9c7caf4640a39c1f22261f1dfcb", + "4da01ec491bb6cc2b87549ab527c536c89ada2bcb0553955f7249d790f661723", + "7058cb725af057020b969bb1da28a9f19bfda1b443c79016cf8130443a394c78", + "994d2d01849daa0ffff1f4de4624dad5d1dc297a8a7f0c2a60524a8869e7bf25", + "bcffd3ebd814d0f5e8e8dc7ef0303a14b98e79acfcabb14c9ad4225afd8f18c2", + "65f92fda49b8b9ce235c49852497d1053adca313d960be19aea8ec423c9945a2", + "19fc4da105fde3886c3f5cf3f192c8c68f2c6679c510dd6ca0c6cdf5e13cd97c", + "18aad5c04eb3f39ce81189eee664fb350f14bd8ce4dd62972aa7de342f017c7f" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21265, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x161c7318", + "dataAbiValues": { + "methodSignature": "test_debug()", + "inputValues": [] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15325, + "blockTimestampDelay": 189245 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f294e5c5739570432e46e997185cf2683c287e8339e1ce7ab9502db4f4b4f0c1b77000000000000000000000000000000000000000000000000000000000012750000000000000000000000000000000000000000000000000006f05b59d3b200003c3b20fe3c6474ef6112cec6e2e1e2a66147c502767418c32e65c3bfa035d898948fc45007206ff5c0b2215d0b5c97d5551a84ed653f28e284b8567c463ce3650000000000000000000000000000000000000000000000000000000000069780ffffffffffffffffffffffffffffffffffffffffffffffffffffffec39800000109b1ce09a2caa796f35db2570026fd5d54f3b6f79d72997e7e30411ab7bab5f", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "35443554117267417118592017165536035041230544133048285386578266163756344810359", + { + "accountingExtension": "0x0000000000000000000000000000000000127500", + "bondEscalationDeadline": "432000", + "bondSize": "27243242601887521753615714576112380311306725462768124357416761313244220872856", + "bondToken": "0x00000000000000000000000006f05b59d3b20000", + "disputeWindow": "7511066176535142771400004346711719422194606327049609712661925953610498943839", + "maxNumberOfEscalations": "67196315620416968751812103706326677402054656808860235011842083525495944438629", + "tyingBuffer": "115792089237316195423570985008687907853269984665640564039457584007828194983936" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 24101, + "blockTimestampDelay": 185392 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa8ba080b8a5e8e7e02b35ca63d619e3bf03ea7ee17a7395426e8c0ae38903a378ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff51e8737b07890aad8af4228017f323f8ee58c58602fe8a95d9a372445358479b", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "63155069885073485423962987089686113899340909970551762747564159406599093592952", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "37048046271970045328561159781521571766041874645079829392453863326819299116955" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7, + "blockTimestampDelay": 32 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe000000000000000000000000000000000000000000000000000000000000004006807205175b22b301c32b6c5e6ee194bd596681cba8c8638952ec1250f3d6450000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027874838a0b68a875ec0ee81d4c8ef1980254e8ae6eaec10d74722bac9ebd5a49a6c310208a5de1500000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "441711766194596082395824375185729628956870974218904739530401550323154942", + { + "accountingExtension": "0x0000000000000000000000000000000000015180", + "chainId": "\ufffdH8\ufffd\ufffd\ufffd\ufffd^\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\u0019\ufffd%N\ufffd\ufffd\ufffd\ufffd\u0010\ufffdG\"\ufffd\ufffd\ufffdդ\ufffdl1\u0002\b\ufffd\ufffd\u0015", + "epoch": "2940820452134172681045375212785432443100619197912571245547930807664892958277", + "paymentAmount": "0" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15253, + "blockTimestampDelay": 492034 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd900000000000000000000000000000000000000000000000006f05b59d3b2000071f7cd086897aaf2110bd910f953453e7bcc20e82af33eec4c00647f9fb5da5e", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "500000000000000000", + "51549178199604899047887187595007193100674999475015380254417935657395983604318" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53242, + "blockTimestampDelay": 71336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639916" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 45495, + "blockTimestampDelay": 225944 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106aceffffffffffffffffffffffffffffffffffffffffffffffffffffffec398000001371ca94900c31d8e9be66d7c23f65b05f5d33ff2b30949acfed984f87f269e080baf5544430fe321ebd2409617ef6786f5b994597bc40798f800826b310e4524793f157456609da494af2a02075c03fcf9249185214862d5dd9f0eddb7447ce", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007828194983936", + "8794995999406163856009545368231505849668095829549449500668097316828300339680", + "58226371372378751290891435773627286125304890291737788253576280229276508283986", + "32375604441627796962923040660328673776239995228426910584919203216277625915342" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 49592, + "blockTimestampDelay": 581992 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000408986d1481eea494dad550c07436bc6bf24fda1699ae18ac8e867c2bc2cbb811f0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000148bd2b35a0e0ff5f58651fe93524e321532b27500000000000000000000000000000000000000000000000000000000001274fe000000000000000000000000000000000000000000000000000000000000001419d972fb93584a547a564eb672065531206d2c71000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "0", + { + "accountingExtension": "0x148bd2b35a0e0ff5f58651fe93524E321532b275", + "chainId": "\u0019\ufffdr\ufffd\ufffdXJTzVN\ufffdr\u0006U1 m,q", + "epoch": "62205062171946186530711375116649708949236787489916806320076639634871891493151", + "paymentAmount": "1209598" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 57406, + "blockTimestampDelay": 508192 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9cc0000000000000000000000000000000000000000000000000000000000000000235c58e45e6b448123df4ec75c527147b56e207c4815f37193cfafc12fe9143343aa8e00e44758769fcba79ddc533615c240383088eacc520788ca11f978270a", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "0", + "15994113140863775377512613840889015859198326455210825118094249343807524508723", + "30606304928112969978587259490316563804100123622315096384733063005977978611466" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14222, + "blockTimestampDelay": 506677 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d236b70e2ac17ad29db7127993a74e4044f47fe8ce7ed46db3cd8a16c797dd6a800000000000000000000000007743aecbf6a16d4951507d7551e5a420748d15000000000000000000000000000000000000000000000000000000000000003e8a4204edf78d831e0da05471c75e00fd5486a22d4239d68dbd4e843fd299ace8efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000007109709ecfa91a80626ff398ab49ad330281d12d", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "16020781443007852116740508170121164524726566377185661961033510726941712176808", + { + "accountingExtension": "0x07743AecBF6a16d4951507D7551e5A420748D150", + "bondSize": "74236390634738164828042936817328106253978822253810691447408898961590657404558", + "bondToken": "0x00000000000000000000000000000000000003e8", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "disputeWindow": "645326474426547203313410069154905908525362434349" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 4534, + "blockTimestampDelay": 153607 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639904" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23786, + "blockTimestampDelay": 327680 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc5c17157bbc9215b06808392dcec2e0c7851767c42bcbb477c1c8c8d2f6788a5f1c33d9d", + "dataAbiValues": { + "methodSignature": "handleAddChain(uint256)", + "inputValues": [ + "84937869156760602001974346264518001642163336959320593474760511948578749627805" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 1000, + "blockTimestampDelay": 604800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0692ea7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000", + "dataAbiValues": { + "methodSignature": "handleRemoveChain(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129574400" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 36805, + "blockTimestampDelay": 229553 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb6c75efa91f1b7da6044090f2bc54454fe4b82551e6e3fe26925710e360197150ba6c5040000000000000000000000000000000000000000000000000000000000069780fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b80", + "dataAbiValues": { + "methodSignature": "handleClaimEscalationReward(uint256,uint256,uint256)", + "inputValues": [ + "66012442094173021184902279859918771353213111919353305006878331952590280377604", + "432000", + "115792089237316195423570985008687907853269984665640564039457584007913129380736" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26105, + "blockTimestampDelay": 563160 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1eab46d9a71b9fc6196bc66df97ad0229e4ed4df31cb14738c45729db851061", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "87711067258970041198538357174074530315975071051269236784798286206430053994593" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 22062, + "blockTimestampDelay": 533426 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3edc7cbdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639836" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 58571, + "blockTimestampDelay": 448941 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f9ad1b274a36d6422204cb38284e52c1e394b76dd420c12b133c0f54555fa8725", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "70026681373776152693382902846792773999381205621007041991972413057813542766373" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 55128, + "blockTimestampDelay": 223499 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417aa9b7c8ba23219e921c8c24f084b211b31e9da2b176051da47b11bff8ff5c33212de575b81bb2e58ba5f1b8efa82a2605f4006b905e5e2cc82173eaf76a20add4", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "76765589790945662604547244204216214155946252006571676315847820028747638911777", + "20759498631951024433205069293438925811645138406748362097890303052587796049364" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 17266, + "blockTimestampDelay": 47869 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xf84d6dfc2e0a2c2d27894539cfe61cf1aa3dce6fa4cc0182d8a4f96446b30c16dcdb4280", + "dataAbiValues": { + "methodSignature": "handleAddEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "20824364399678545662833682292547392236236046121352715060387808748443780465280" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8422, + "blockTimestampDelay": 175942 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6fab0000000000000000000000000000000000000000000000000000000000080000861226f42b4f83fda125862408777203fcf059cc4d6afa3d8b5f14cbd0503cba", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "524288", + "60641993806473011143834861665095605796555276187455692014587155889705714728122" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 5058, + "blockTimestampDelay": 564562 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9f6259e500000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000060000", + "dataAbiValues": { + "methodSignature": "handleResolve(uint256,uint256)", + "inputValues": [ + "262144", + "393216" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 54349, + "blockTimestampDelay": 446424 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5ad8117bd6793da9372ee7a9f184c1f229a994a23f82083eb6803cf5612a5e084994694c28b481c29ef6ab1024c7f7ad48917e7b3644de29036693dfa1f6557a0", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "78478209922765382613928019011452160112457201279089481808494135837808952467588", + "69328571831131295636312210863921518104963878476144420959825437715154096969632" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 356, + "blockTimestampDelay": 94684 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "115792089237316195423570985008042581378843437462327153970303678099387767205587" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 26236, + "blockTimestampDelay": 172938 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899fff514b534b61c375c439f68b334317ec7ad1c81896f2e7f7d9e2bf248e8b86bb80269a17e974e3f307c7b602e63a3a5f54ab7520e1ce48c185b85068b23a50c370000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0ce9ae7037dff0632bada0555a4b2a1709ee25a0f6d47ff213ef7dab06f13492", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "110853235481380273198257434098634459560730545434260276739156884901825263201208", + "1091259233017721395373144204062272118708516766005316865622853242594359839799", + "645326474426547203313410069153905908525362434349", + "5840633478355227696719452384365761985173515625270275222857093897003304301714" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 48302, + "blockTimestampDelay": 98481 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xc82f34f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00009c3ade46c6a10c03646645dceced151803cfed4a76a69d888d9528938805d33e", + "dataAbiValues": { + "methodSignature": "handleSettleBondEscalation(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913128329216", + "70664815604550041696416122873938953675815643014153596578083942850550877770558" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 21405, + "blockTimestampDelay": 224071 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd51b326a4f11ce728964fd5cfe4e67e0a4108fd7bd12e31d80bee3e9fd7503b25943d86bfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600002fbcb13722d80a133f1e093640349fcea5017c8025ac70c52fefa1f32bef4147", + "dataAbiValues": { + "methodSignature": "handlePledgeForDispute(uint256,uint256,uint256)", + "inputValues": [ + "35764176285829964837988166432096626338604401112435149938249800147871318923371", + "115792089237316195423570985008687907853269984665640564039457584007913128984576", + "21592094227161796483602757534726537598958165417486369280358722180410608927047" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 30001, + "blockTimestampDelay": 418139 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e300000000000000000000000000000000000000000000000000000000000003a8", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "936" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23854, + "blockTimestampDelay": 283267 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57fffffffffffffffffffe3bda3d84c15b95fe7640319d8a5c26029388bb4c0000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "115792089237316195423570815840224595780479919275071395757947099535303139655680" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 132, + "blockTimestampDelay": 172800 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 0, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a57439c4dea175c1f4dc2283a0dca8df089ec1e32de1a71e6049937ba0ef888023b", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "30581126742740578579461185375868096517298438186402910784813700598662223626811" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27956, + "blockTimestampDelay": 447027 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x64d6e6d3179a67678bb838478c44926fbd26493474eb791516d81ee5baa3765643a7f0f13935c24452e2a5faa498fca2a6c4ae1b3a3c6a9976af2868354336a0b5eae4a3df8b40fb6fcf686f1659e51d90d962d5cbfd1a55d1a1db345acbb7978cd9bd61", + "dataAbiValues": { + "methodSignature": "handlePledgeAgainstDispute(uint256,uint256,uint256)", + "inputValues": [ + "10676003636853416453138572180884583936897901964655062312574559468487432466673", + "25876816044475934884764655838030328364254713960717807302331158298975447737507", + "101111805466560395134870514718984948651558312084779106319072364710585748274529" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 9230, + "blockTimestampDelay": 259200 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x4741f6dc97ea50d8c074d187de7cfc88d0f1c34dc24db2642bef23ec1b88370e17145d67", + "dataAbiValues": { + "methodSignature": "handleSetFinalityModuleData(uint256)", + "inputValues": [ + "68713240332555606262576304945776648453307986915064085044793172925635856981351" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 12052, + "blockTimestampDelay": 19785 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x9d2e6a6f0000000000000000000000000000000000000000000006f05b59d3b200000000", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorRequestModule(uint256)", + "inputValues": [ + "32768000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 3 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417aa92d06f9b187c43210def504095e8426544f54827af0094e5c47e1262e065b663a93985339d1aaaa5528eca3343f64826af8471fa3111ff7b1a1d067661f7a4c", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "76520427670687974472084713126552624256348516399009121051566372436541744503654", + "26494923045561211048191064476495620839647940608616973048585101859895222696524" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 6938, + "blockTimestampDelay": 197916 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x91e32c745efa4f15675e1dc5e0820d8b61e4e1c3b2c7738498336617ce8c1e04c4745f79e0fd906e76d9087d90474287d3aa87bd7537e316bdda4a8d939805778b853ddd", + "dataAbiValues": { + "methodSignature": "handleCreateRequest(uint256,bytes32)", + "inputValues": [ + "42959665348027796296446623032871991309114884315911569472746230850572248178553", + "e0fd906e76d9087d90474287d3aa87bd7537e316bdda4a8d939805778b853ddd" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 100, + "blockTimestampDelay": 423478 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x88b05f2900000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000012000000005bb97848736b7142c96367d03991dd42df02a25e9fc88dfdc517b1f4ce28bc31fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83cfafea801b1496906d8ba69b3619acad07c602f5f5644c5546c0a5a1625c9e61db764de175bf41c23313c816c5b2dbc6935d8c395c4856ce1ad7fe38ed0f6", + "dataAbiValues": { + "methodSignature": "handleSetDisputeModuleData(uint256,(address,address,uint256,uint256,uint256,uint256,uint256))", + "inputValues": [ + "86400", + { + "accountingExtension": "0x0000000000000000000000000000000000010000", + "bondEscalationDeadline": "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "bondSize": "77309411328", + "bondToken": "0x0000000000000000000000000000000000000001", + "disputeWindow": "104084459477994910024948624640243341651381141291966115158980558504594338926838", + "maxNumberOfEscalations": "41488166090894130137464127351763299761175392285857027714786127187107321003057", + "tyingBuffer": "112281329574643079738863202584985426034020956563149812400628300592423397369289" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 184, + "blockTimestampDelay": 524578 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317d97e31ce94964032123e4969a0749e9aa014916f3250bf8d2d11218c2b83b7bc6000000000000000000000000dd92df5080374ff85078e1a74b8880cd00776ed60000000000000000000000000000000000000000000000000000000000000000b8a36831dc71f854fbe7d1b7ce3a553891cac7605d6efcc4d3c8b0472fa3db1dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c5800000000000000000000000007109709ecfa91a80626ff3989d68f67f5b10a22d", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "68700513958072141403648763787816715343496857287170728137452284071883052907462", + { + "accountingExtension": "0xdd92Df5080374fF85078e1A74B8880cd00776eD6", + "bondSize": "83514279336752933740344099228515725376396365006849213236518003647240640650013", + "bondToken": "0x0000000000000000000000000000000000000000", + "deadline": "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "disputeWindow": "645326474426547203313410069153905908525361570349" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25919, + "blockTimestampDelay": 101425 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x40605c3f0200410cca20c8fe9f5721a3f210c230ddaa45fafcbeb1bfbbf8b5311c7ce95300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004c7e5be381d4e135d9869c372ae5fdc127d572047db177eb937dab489b485956e200000000000000000000000000000000000000000000000000000000000003e59142690e4395ff8f7d36a51db819f9b2b627dd44624cc27af7881ae5d85dcdf200000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000003311cf3105300073b4d65bc6c7ad79013e5ef42b3eb910126db263e9ccd31784a0000000000000000000000000000000000000000000000000000000000640000f6108ad6f1a58aee925973e0ace713bf95f2451f67e85bd48bcfbe31548e84b91c3de217cef27beae2f3d56daa00263ccdcf504d93eb4333cfc73c4509f5099f0000000000000000000000000000000000000000000000000429d069189e0000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab1fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e000100001c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c71c60000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed36ce748c92fc6e8c7054eecab7ad246cb86145f4440496f6f14134d2aec40099345a0e41980dc4640d7d762ba666217e6d2335cc66cf9205e468798481258f2fe0000000000000000000000000000000000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d100b4b43a80fecf041e66f27f63cd64cbeb745676ec606bab5bfbf3899cc19b73c381813101545d8fc28f8764c2ffa5e632ab2d55bad52d1355e873c7e7f0b09fbbb7144cb70eeda3d3734f9e6acc52eaaa4e71fa3aa5a9611a184c15f34667d8a20000000000000000000000000000000000000000000000000000000000000000380d9c3a02dbca81296453043d62e319d481e43707aaaada96af9359029428aad358e508346e35e1319cd1b4204bc2ae280a60efa60b5803373ae7fa2a728501a3dab0be6f911f13d935d9984ba3bdd1d59d56f0130475ed4366bbcc0ccb60ad00000000000000000000000000000000000000000000000000000000000003e8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0b800000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000000000309dff374c6182bc7cc7594dec4619e9906308720653134fe85cde855a6d6bdfaa9d82c04697a26a2f2fc89c44372efb5e17daff2e86a43e551c704094abe3499ffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbf37c00ffffffffffffffffffffffffffffffffffffffffffffe2db4d2053ae00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffec7800008c71842425c9851ef1fa1dac96fc89fac5b0a10086cfc789214bb9becf0570f74512d139774ad42286d555483a293074206770b602fb92c3af103dd07c60628b00000000000000000000000000000000000000000000000000000000000200020000000000000000000000000000000000000000000000000000000000093a80a10582f7dddd6ab3bb4bdd86be89aea4e2e7aba5ae91d125479d7a686d2c8b940000000000000000000000000000000000000000000000000000000000040000ec19fbf56c5e92f947dbc238c0da09f2fe83c31af46488e2a8cf6bf2976d77b370488e73d98a690a6a8abad72db885b7dae08dfdcca872b439b328b25759bf35000000000000000000000000000000000000000000000000000000000007ff9c000000000000000000000000000000000000000000000000000000a1b01d4b1ce614afd329253d5e4eec4dd3821b5fc692422bae9e1789c1b87ebedec11e9cda2e7d495c6ffa192ca0bb444aeccb50689c3623de6949f46854405bc966bcb6770000000000000000000000000000000000000000000000000000000000070000a4e0e70cede2c12be8a82c7bb0002b8eb6149b9c3ef7c6119916d7e857296399d854b911d10aec4be4765a7c0a482f821a05ebb500ef1254db1c40fd93b9fea61dba1c25c787be027fd2e3494b36e6d331be0f0aaa8cf3d6cd2ae8fd250dd7abcfa5e5962ef475853cfa87bc09f9191e602d950155da341dde817e11b764cc2095f022d0d7e91d3c9a4064a7f8205c5f4e170e666597e049b427dc16d073077500000000000000000000000000000000000000000000000000000000000000030000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d872a7123006ff99b455a4921c98befc60fe0c67031de33c9f1c2145bb2613bbc2ea807ae15d2b865a7db6f945121113ed550d280408d1e329be213f1ed765870ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b00ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3a6a2b6b51da8bc33f4de9b5693dd734fa7cbb006ea5213e8e3e8e55e28ec0b65fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff48b00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00c794466b32dfa891ce64514d00c97ab1123e8400ee548d3f8334b220605190e200000000000000000000000000000000000000000000000000038d7ea4c6800048d3c657cd06a6172cb3c55c578d3a11d4476ac4cec723e3d4d655d02555f4f0265fa64c5d2062e6f10eb554c57cbe56bc6acbd8c12adca1149b04659538139d60fa47b00c655cdb0746da2c7c1cd853fb0af50da03b21b860d3926c7d2076fb896ec62efa3e29fb347e9b04144313f08bf6c48d1cceb29e16e564267c2fc0b4fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed30000000000000000000000000000000000000000000000000000000000000000d5529cc29e90ca039d4efb38d951f7a223e64e786259b7d5ae0ba6abc28fcec000000000000000000000000000000000000000000000000000000000000003e8e36144b154dde00cc04c22ccc9f4e1c90f42f827d07dc6d0e8abc802539e6f73b626a2dfff01ab7170b9b9fb0dfedee8182d02c7f2b715ee32d21387ac488e97000000000000000000000000000000000000000000000000000000000000001d5288eea52b1384bbd194e84bdced3db4535acc1e4425f62d9f086423c1a080a2ffacaabbee7f158c60ecd0beb300d4ad2b3d6ef1ae7b077b7388a60235ad01d3b93a28878293b15b658497cc6c6d0ea6ecf9ee07217f0c9aa5f8b0892a9eb0b46bc461e6566d1e29af3ce8205223547d7d1591d6c983d4e71f516a689f2dd4d52b3128f618d8c77ac9b410c634ccba8b771ee6fcb33e1262ce574faadc0739ffcfb0305d23a092552aa1f8162b86e86028572ff2e1a5e606fb2fdc27f770a96dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff900004af955b5eabc23b72fb36631df6b6a6b8056fd0f84ee1a44f070cad12e02f57751e6631f7d05772a00431eb187afcece2b1d414a5fb6e13fb716ad60eaa96d2c0000000000000000000000000000000000000000000000000000000000030000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800009f03c25c5931ada832c74234efe3a7e5db174aff54c60d89d95b5eb7a1f125724fbc80f84c596e0da4001e1358a01b014a23caaa3a4c93e5f88620a6dd815bb50000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000fffe0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d0000000000000000000000000000000000000000000000000000000000050000ab50615387eec32faea1a92ebacb034b669d9b64caaa08f4e8b895e8923ff48c00000000000000000000000000000000000000000000000000000000000d2f008d4df9f3e5302865d5a2c3e35190e52cb892cd96d49288d7a5b569c9d4f28b94da805defbad575e35f256337a84606c33c2f2b33f0e78eeaef1efe5e3bcd3884662363efd8563acc5f21df0b8c49b32b3a8349a85ebd52d151c66429e2ba6fe20000000000000000000000000000000000000000000000000000000000020000500fcf757a48689b990676816e3bc221ef2b31ed3d4db7c7f6931cd01a29659f7ecd983caca3e954df272d682fb68a8b1ff7e5ee2516051735f3de364bc6bb3b3f55739d9e53abe1dbc67448fcaeadc645a202234d964e460efc32ffc3b94576ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ba30927ed70a0112a623136ef66fb5bc60df1fc7b4e412700bae551a900a1a5ccf73baa7a51456e5e773ff32608a06d3f9adaf6d074d5a76dd8e887a28722023", + "dataAbiValues": { + "methodSignature": "handleAmendEpoch(uint256,uint256[],uint256[])", + "inputValues": [ + "905074655485004108607337249943135160874717547047819677943667362413800122707", + [ + "57153772201059091427674702095160085020575969444899274695515814120981387630306", + "997", + "65702700018772295285641744305422253124998005341393525800568053425846215364082", + "393216", + "3", + "22214478862856196402235137118502809823820432438836253392278385596944989911114", + "6553600", + "111298188540392792167251238172853782003803079965936529581948532548817759667385", + "12774097867830172567665155031478904706813822746602401712704343890851429419423", + "300000000000000000", + "115792089237316195423570985008687907853269984665640564039457584007913129246720", + "77194726158210796949047323339125271902179989777093709359638389338608753093297", + "115792089237316195423570985008687907853269984665640564039457084007913129639937", + "196316340530931592175921944526990946203053766319513217569067355699179974", + "0", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "49258431668674329985233305063018037235645410780116477310508292538408990935443", + "31493856368346246194720234575958573204098127017253979057082649670744714834686", + "32", + "115792089237316195423570985008687907853269984665640564039457584007913128775936", + "81734748995643829897749293629050790648292396040940111871005096764596803040195", + "58576618960013436577985191491624867541201923372516262339792817517247239069627", + "82809117699998044416903094946931632162775816286453799866195757321946017552546", + "0", + "25353566768913084137975124568004511822114351841878927897817779161144602405034", + "95595074313884271267459208754562795167546826447980276332141791768385412039937", + "74113386820690374841632175234754098493152877767692964222255803744873003835565", + "1000", + "115792089237316195423570985008687907853269984665640564039457584007913129380736", + "458752", + "3", + "4466502805272837827542281810375039010959250724098765293399392848083032653306", + "76822814172351236704381957085694141751880008096938687989110002656304911234201", + "115792089237316195423570985008687907853269984665640564039457584007912524839936", + "115792089237316195423570985008687907853269984665640563901831984007913129639936", + "115792089237316195423570985008687907853269984665640564039457584007912801959936", + "63524364525032563486099473209578151861273580307383532114660109137943770525943", + "31242833813677776401571601700389063228100765957093565970677171678370104107659", + "131074", + "604800", + "72832106766726792058423032174356857004028480144157507654636072930991491812244", + "262144", + "106791742397202938182777462122874042302016213385485331829509551220079480108979", + "50787235201274696145106251269836276692246095160314164782915832401458227691317", + "524188", + "694444444444", + "104068505613939395620673537148501655846091818995213599622855705840613209316570", + "21027753237518509859013298513333261540195089137345481702615930526600716400247", + "458752", + "74576675562143808956693745165501454248914564230543746207844979903835350328217", + "97849267750834936202069277582968220853718105898992477735441665874625100906150", + "13445900430392228723257928073146961807097387790884559974765581692820184225707", + "93921873971274920962213762017475619213210183931518380568421618927139721366560", + "67818898024236242084042521021667633473967346330859660123835332080677218879349", + "3", + "645326474426547203313410069153905908525362434349", + "61137222976443039109911608729104452804191070247950560134441070334422814899132", + "21103274347266413479703070695065142448029868551910200139833503007741245282416", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "75371423090025251448523763095978950134991139729190694438513593473478234475365", + "115792089237316195423570985008687907853269984665640564039457584007913128889088", + "115792089237316195423570985008687907853269984665640564039457584007913129639680", + "90272236245973403234983831901481661623806340525386389709016894470763693838562", + "1000000000000000", + "32940698741547198576231977008498678030316414160745073629678995680899735352560", + "17356886465974949297740906028401751349449125040675107917178624515727185941405", + "43864240000434850618035279849298712645569081110998933520835965174566659061499", + "62162581245320974403036203567003251911058458786240641759078759572784452452532", + "115792089237316195423570985008687907853269984665640564039457584007913129639926", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "0", + "96488600126906225865587874648621364254506924508256347287845454729728719048384", + "1000", + "102846874893284621945828007270689593150392822824032189361788766148864593784691", + "82389202752447669384498899468905313790058128858245263457757434057410801602199" + ], + [ + "37331591853195898332646914233173156955501937159015030398665417168470977577122", + "115644852447380397106580820209472115954010305551228447193779313880069065998803", + "83780633840859455039201963591578546882784623668416050544233602266931409105076", + "48744452502391184566360786457904555535403359862785255399679643279797858981077", + "19536310699872020071375096717549843195520823039636054431981813458089300933119", + "93940058534988809565601868948434030179172844667554385226371768320462873995629", + "115792089237316195423570985008687907853269984665640564039457584007913129181184", + "33911687267201826747227228408667605311127959699127589037438593522296594560375", + "37044399681956569630066473435830066290752459357848831750171393433806970645804", + "196608", + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "71924384894433292096989519172037299445580544500513898576006906343017514345842", + "36065772403896067072996942935610603333651879905849624192774582834877652097973", + "196608", + "65534", + "645326474426547203313410069153905908525362434349", + "327680", + "77487516594307415765035774972120118522131374758824921318574400461875517060236", + "864000", + "63913883984472213085539992323673314504226457836791357038462740680155449166740", + "98831005740957109638021708781159126811871769049869769667432650266880395524228", + "46198439941858928614091063460399623917777648473584188038534412802191458463714", + "131072", + "36212962421318419301993835762131349070021499536150148004768772560220653708703", + "57354673270993789344352727846460728222299326903621920205323618921321677110075", + "28646689411467215300358786927112113082682434223951368508192384407000789370230", + "115792089237316195423570985008687907853269984665640564039457584007913129639904", + "84216009570163080362684513090370046181896401684199635219638541266786313706076", + "93833235313702148338103348269210324456108000960628966079234547430264346386467" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20470, + "blockTimestampDelay": 408021 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x0fb55087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580", + "dataAbiValues": { + "methodSignature": "handleApproveModule(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035136" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 8529, + "blockTimestampDelay": 184502 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000040ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001813512a62e6c213f6d51f779f18e2c86e0d00fe76b8307ab550d59bb26dd317a0000000000000000000000000000000000000000000000000000000000000027416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "86400", + { + "accountingExtension": "0x0000000000000000000000000000000000000001", + "chainId": "Address: low-level delegate call failed", + "epoch": "115792089237316195423570985008687907853269984665640564039457584007913129639916", + "paymentAmount": "58442129073348854913675807273523946543963145606711603520462692937339565322618" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 15158, + "blockTimestampDelay": 295089 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 1, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf215449ba16be31dc1d7de22fb93baba8df1958226e92a715719a8538005fae2aa18", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "31032249088497022257228939088440837287694462762632281658808369736101373585944" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 20983, + "blockTimestampDelay": 360615 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b13740000000000000000000000000000000000000000000000000000000000008f8000000000000000000000000000000000000000000000000000000000000000404d995b471c561b6a40db52ed1b0514237c79ca6e737325db49d7a7562fad4da00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000213dc43012f326a0b2168c94fe01cabfdb0135490000000000000000000000000000000000000000000000000000000000055f00000000000000000000000000000000000000000000000000000000000000005bd25121e6f17a79669a63f3ee85a9e50f9718b00dc9ba49127d4896b0958069313f71ea11b70ef3e5c4e3d9124d325233b79b1ea36acb3e29610450877a8edf6525d7e8b05efb2c65283bf8333ffffa1213857d2b92e272a29e0fcb0000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "36736", + { + "accountingExtension": "0x213Dc43012F326A0B2168c94FE01cabFDB013549", + "chainId": "\ufffdQ!\ufffd\ufffdzyf\ufffdc\ufffd\ufffd\u000f\ufffd\u0018\ufffd\rɺI\u0012}H\ufffd\ufffd\ufffd\ufffdi1?q\ufffd\u0011\ufffd\u000e\ufffd\ufffd\ufffd\ufffd\ufffd\u0012M2R3\ufffd\ufffd\u001e\ufffdj\ufffd\u003e)a\u0004P\ufffdz\ufffd\ufffde%\ufffd\ufffd\ufffd^\ufffd,e(;\ufffd3?\ufffd\ufffd\u0012\u0013\ufffd}+\ufffd\ufffdr\ufffd\ufffd\u000f\ufffd", + "epoch": "35099046917880542585164555430508038868065917922440903797197539250676616220064", + "paymentAmount": "352000" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 56280, + "blockTimestampDelay": 458752 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xefe223c5fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseOracle(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129508864", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14098, + "blockTimestampDelay": 569046 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3f60f9ccc48e72a465398a458fa410f65630310cd37dc76294bc92537e2601e96c60ebd10000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000", + "dataAbiValues": { + "methodSignature": "handleRelease(uint256,uint256,uint256)", + "inputValues": [ + "88905001836693742325507352277997560608298154628648216827782397487703371344849", + "0", + "115792089237316195423570985008687907853269984665640564039457584007913129574400" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b1374fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c57f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003c80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000da53940b00458626f6289ddf0adfdfa413fab300fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00000000000000000000000000000000000000000000000000000000000000000031213c9412f9e5d2844620a737afabe7451705dc25ae97046b27367c0d73121c377e07f41a8682748c3637fadc5e985348d4000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129035135", + { + "accountingExtension": "0xdA53940b00458626F6289Ddf0aDfDfA413fAB300", + "chainId": "!\u003c\ufffd\u0012\ufffd\ufffd҄F \ufffd7\ufffd\ufffd\ufffdE\u0017\u0005\ufffd%\ufffd\ufffd\u0004k'6|\rs\u0012\u001c7~\u0007\ufffd\u001a\ufffd\ufffdt\ufffd67\ufffd\ufffd^\ufffdSH\ufffd", + "epoch": "968", + "paymentAmount": "115792089237316195423570985008687907853269984665640564039457584007913129246720" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 282868 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x48a41c27120e574151e78e43d42b5f1d2755a6c8c1f3465ced2014824c5e3c7e4eeba9444fc74ee0c24ebdba3e62450bb6d404762453c8f86c21f2373a1ba170f3ecf81dac04840e25f58b0a6d622417c093c48e05fa9efa5bddc843219fe247671e0087", + "dataAbiValues": { + "methodSignature": "handlePropose(uint256,uint256,uint256)", + "inputValues": [ + "8166969346359948639484006387253416172301236988256769726962054929875661990212", + "36084861999675023071727212187156050330492265038665057332289628950360509708317", + "77805788756535527407772768649618221004754717959448356492205955344147878379655" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 32, + "blockTimestampDelay": 524288 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000060000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x727899ff8e109937a0c12587ee4666cf7eb8f9a914f1385f133128a7bbf4f5eff743301500000000000000000000000000000000000000000000000000000000000546005172646d987a680e04dd6a045e2c8e98a680e2b9c41a2d98c3072682e7a7efc25e43b123c01ac311bee46cc3bfa5a0be50d6b4473163049ec4c37d3a1caf1b11", + "dataAbiValues": { + "methodSignature": "handlePledge(uint256,uint256,uint256,uint256)", + "inputValues": [ + "64257751518777829519648785807987822488615391450098951710757499941744441241621", + "345600", + "36839454429956002479784537352517879993063816426425600860733833535606361681858", + "42637009093099676781532913644885930180275839542941773954417676940607658859281" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18765, + "blockTimestampDelay": 352717 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf8fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129050112" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25275, + "blockTimestampDelay": 604799 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xec5bf21572dba7dbe09c3bbe6a88d23c3bd9acfe205d1d60aefecc0db6a8499e751e9815", + "dataAbiValues": { + "methodSignature": "handleFinalizeRequestResponseModule(uint256)", + "inputValues": [ + "51951762765201292588978808218288335040492006071994363203642941846922903590933" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 42594, + "blockTimestampDelay": 143245 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a55655388924a9c0b4fab8a3a6823ac564a32fb78cfbcc473b96e55fbeebc0eb71d773", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "25571830607931438209766452591287454872650721757204844895931688485804152313715" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 53210, + "blockTimestampDelay": 360623 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x1c6850cfa7e5b450595c21a14259f758b64ec4381302d527c203a49e4b9c1e83094266dd6b48dae36a7e33922c16e094ce88a626bf6eaa1d596dd330476320c9b67cb28dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000", + "dataAbiValues": { + "methodSignature": "handleUpdateDisputeStatus(uint256,uint256,uint256)", + "inputValues": [ + "75942098171788587147868381348791675977767975212740010787554276083613701400285", + "48526198498900060195577435149830061143198857828146295147538220227829339828877", + "115792089237316195423570985008687907853269984665640564039457584007913129377792" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 14516, + "blockTimestampDelay": 162774 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000fffffffffffffffffffffff80d5614d5661c22f91420df44ee9eab0b97e74ad62bba341ead94025d38af6eca293db8770eb1b32ba67b7363e9f3d6803df81b0d0000000000000000000000000000000000000000000000000000000000000024", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129050112", + "115792089237316195423570984997072031313592135005999182794687277654456605821654", + "19778445761017581235509319627811875743548082417220173652855107228865444453133", + "36" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 258, + "blockTimestampDelay": 101436 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 8, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b8040000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000010000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000000000000000000000000000000000000000000000000000000000000006ffeeb3fd82fd57624ae9fddc080413e063c59aebfdd9e86aa1d14012b23cc42c3909a33c5245d7d9c850d37caf97974d05edd8cfe363dd7336cd23498b53ce1fac34000000000000000000000000000000000000000000000000000000000000003c080aa8886e229c59ad31a48e8790c532b08554e63f60fd65922b33e3589dd8b96aa104212b8f7bc224e863f0e8c252064d7229b15bbdbbe21c0b370fb52ecf016ae7f838205c29fb37c80991959f4df295b815ab130ddaf950ec1bec40be1244219653dcfedcb982b35ad7871ca540ce120b5cd731953fc8b91d4c4dc6f0e3d4d6f3303d5fde3a31146530161a95a9e5730847bb0e1adc263d276fd57bd0e9d5a1cc4a17639fc1be64e2f04f022fe314e4eb945526ac1e64f07770f1ade7d0db6c94d83e4ccac8e80511cfc9d681f3d91507412e8b07c2e7c8d526c804bea9d13570a7586321df39a35efc4800cfe6f84e57e37881266b4981bf8047828149e34fffc8ffbda96ca0340d3f9a352599a6dd40c1b5e04a6df65851467da3e99955756f07edf77dc0a01f914c598c84ffcc8992a824b7692ecadd637fd191d1ed0c455a2e9e136425ea6ed45a40080c391f2f2deb3b8048cfba079bbcfe913a6ef84d1e680ee7ba81fd7eaff5fa2094ed84e21f7f8f41e16193838b0e4c0ca6197ae2edffcfd0479da46a691dd1169eba1ff20b64d16f5124b8601d74e5e1320d6a8ae86f61d0b2921f586a223eed1d260417e9593c5fe94fe9c7c3e79e094cca39a2efac7e2bcd9829cb27ab0e73c400c60da9115aeb6f19875c4cd2353da0a35d33ecffa467bb2268d77ad6d71dd9bcb7b024f5ff4cd6a4007585993d5ea7df79255473ed437ad85ba26f6d6baec88ce97da00bcf30683c9c13d2412347ea64ac677e6040592518afb3ded7e96495db0cdf7d26a4975b0d955fc54b5bd4ed185f739cc30f03a7f23a25a5174766f8d7fd93b39c836e9c8afd3dd24301ff3dc6ba307623d89316ee4ce81d67849775b6a630da2070162aeb4c72585d93e0317c67b28a9a3a12d3f3fdeabf90aeb820806d3c6fed80f683055994f279e04b7d917f52c54497abed020dfd879d9e39b05bf9b57cabac7a801afb2a0241460b62bb477f69b395ce79330f3ac1b16009901a01e5a6a460f75039dea573505eba6ad0f70eb27909a646195dc69c0f5ca8a766100f3be920285377868bbaeadebcd299fe8c0427854ae7435ba56c29e52895feefb622ecc2945098f01cbdda3630343062eb1e37c3d5a4e6ae57229bba8c4fea1628c1ba448bc5cdf625c231047e4801079dd944f6f545e8919a5d5551d29a15bde1c5371198736dbb662280b7843d38d45d0dce2926c6fb2a8b59a8b7845c6c2d964a5aa85d684263c4b83dc4c7171da1e59e37c80155e035755661f7634ccd7b55a898d31544c8468e6f488bdede21dcc9265aa8818e56017d605c1dd0743ea6e2830c408cc25b6552d6014b618f130869b725292a8377fd7a13212306a1eca6e7cf0e7a8cde94bc2a8b3a95aecc11f627c13d2c7f480c3855b8cbd276a30a3fda895db68e33faf65b1bcd52b09bcfa04b9cb8b5f72afe3c9bde9ead1c97eb062e7112bc9aeca5c2bbe3ceec1ae37d16e29361c16456d264bda7323cc19e74ab7d7ebca395dfcb5bbf2ab0baad7794bba7db130667d95c3d572935aec28dc8b9f511a602bf74215c24248625d15b17ba40c7a58043e38ced1995d2154c366bc0be0e2eb305dd9eb025f96255be97a43631c8fadce211bafc2a31de41868fc1a4f2114e6a94cb7247ef7a7de850584011d18228e6e4bcdd035f52ec239685e26f7e641e9e709f65c50fcce5127abc58626ca96a4c1f5d7676f8e6bd1dabd05ad51ae7bbda1fc57e607b0e8d65071ea96dd51dd971e5934ba0a695986eb01879d508dbb993c92579d9b28574782cd7e0b758d48c6eb6a6c277838e4d71679e07e68fb0f85be1c4c4c1fe1d834de1cecdaa5d2a4f5d6a7d28fde6e6e96b919af9ad18de545be180fc12f3ccfcb9c7bde224c1c74304938d515f9cdc98040161272295aeec9689de3f42cd70e2dddd290ad657403cb197b4fd042e8b60dde8afc62b97f16b1feaffbab7823c8ec40a5f49fad5dba3355b47e16535bf0d4d0ac71372d1baaa0bf9b807572fcd8e70c4205736d8077a465d6e4d070f7d5f012f24141d1a4ef2e87e8896da73960cf26a54c6038c03a022069b8db8a3f4022289b2ee17a7411ac2c42b9f7f37335c0c0075d075fb276fc33c1f3f10462378fcd112eb273ee9bd511eb3f30f58b6f1edb2df4e57d24c67070dee36cf818164bae2dec3717b552c96ab42019d30f69484ea9a4dc68bda97dcba0fc6a093b5ba8e1e15e165fa671b83bef8b7b0cd614c1106a996895e97839afa6657e0febc0b48b129528ebe80368d5f23debd463575f69b7ed8426dc3fa665f13b9c08c8c05a1d4c31b41732523d2b943b8eee9b43a74a4cd533b781512468954ceec8c560e2522373a0c0a1b0e090af4cbaf9c4b28b2e30023693ebef35cdd1ada0dd7102e3ae0672b85fd5b7126b24cc4046a74abe14e7a2b592b1f463cb7110964aac14bb7e710ffe434b5dbbbf05edc9bb7a5c827fb36ab1799350c43a72fd170226bc9b9fffaa3744056aa18c854e975f117cc594be842217b1b451aea7ca191900a670f29acf18cb968865df37f4458ba9e720ed946a0ca1db4531403101cd0da03396348f9daf3cdca7b849d0ca2f15ee9fa5363f7fa7504ade218503f485f0cb3a1bac183cbae7268eeeef95c5a6797176ffa49a2cb7da742f9ad1cc3b7090cf4f59d8d046fb365198deead59f9514815d7c4494d8614", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "65536", + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "458734", + "81411916260887808935637274574103901471821894122785804973774955777497682950409", + "73833572969127614450188660123107505555423378693848513117239642789239664389172" + ], + [ + "080aa8886e229c59ad31a48e8790c532b08554e63f60fd65922b33e3589dd8b9", + "6aa104212b8f7bc224e863f0e8c252064d7229b15bbdbbe21c0b370fb52ecf01", + "6ae7f838205c29fb37c80991959f4df295b815ab130ddaf950ec1bec40be1244", + "219653dcfedcb982b35ad7871ca540ce120b5cd731953fc8b91d4c4dc6f0e3d4", + "d6f3303d5fde3a31146530161a95a9e5730847bb0e1adc263d276fd57bd0e9d5", + "a1cc4a17639fc1be64e2f04f022fe314e4eb945526ac1e64f07770f1ade7d0db", + "6c94d83e4ccac8e80511cfc9d681f3d91507412e8b07c2e7c8d526c804bea9d1", + "3570a7586321df39a35efc4800cfe6f84e57e37881266b4981bf8047828149e3", + "4fffc8ffbda96ca0340d3f9a352599a6dd40c1b5e04a6df65851467da3e99955", + "756f07edf77dc0a01f914c598c84ffcc8992a824b7692ecadd637fd191d1ed0c", + "455a2e9e136425ea6ed45a40080c391f2f2deb3b8048cfba079bbcfe913a6ef8", + "4d1e680ee7ba81fd7eaff5fa2094ed84e21f7f8f41e16193838b0e4c0ca6197a", + "e2edffcfd0479da46a691dd1169eba1ff20b64d16f5124b8601d74e5e1320d6a", + "8ae86f61d0b2921f586a223eed1d260417e9593c5fe94fe9c7c3e79e094cca39", + "a2efac7e2bcd9829cb27ab0e73c400c60da9115aeb6f19875c4cd2353da0a35d", + "33ecffa467bb2268d77ad6d71dd9bcb7b024f5ff4cd6a4007585993d5ea7df79", + "255473ed437ad85ba26f6d6baec88ce97da00bcf30683c9c13d2412347ea64ac", + "677e6040592518afb3ded7e96495db0cdf7d26a4975b0d955fc54b5bd4ed185f", + "739cc30f03a7f23a25a5174766f8d7fd93b39c836e9c8afd3dd24301ff3dc6ba", + "307623d89316ee4ce81d67849775b6a630da2070162aeb4c72585d93e0317c67", + "b28a9a3a12d3f3fdeabf90aeb820806d3c6fed80f683055994f279e04b7d917f", + "52c54497abed020dfd879d9e39b05bf9b57cabac7a801afb2a0241460b62bb47", + "7f69b395ce79330f3ac1b16009901a01e5a6a460f75039dea573505eba6ad0f7", + "0eb27909a646195dc69c0f5ca8a766100f3be920285377868bbaeadebcd299fe", + "8c0427854ae7435ba56c29e52895feefb622ecc2945098f01cbdda3630343062", + "eb1e37c3d5a4e6ae57229bba8c4fea1628c1ba448bc5cdf625c231047e480107", + "9dd944f6f545e8919a5d5551d29a15bde1c5371198736dbb662280b7843d38d4", + "5d0dce2926c6fb2a8b59a8b7845c6c2d964a5aa85d684263c4b83dc4c7171da1", + "e59e37c80155e035755661f7634ccd7b55a898d31544c8468e6f488bdede21dc", + "c9265aa8818e56017d605c1dd0743ea6e2830c408cc25b6552d6014b618f1308", + "69b725292a8377fd7a13212306a1eca6e7cf0e7a8cde94bc2a8b3a95aecc11f6", + "27c13d2c7f480c3855b8cbd276a30a3fda895db68e33faf65b1bcd52b09bcfa0", + "4b9cb8b5f72afe3c9bde9ead1c97eb062e7112bc9aeca5c2bbe3ceec1ae37d16", + "e29361c16456d264bda7323cc19e74ab7d7ebca395dfcb5bbf2ab0baad7794bb", + "a7db130667d95c3d572935aec28dc8b9f511a602bf74215c24248625d15b17ba", + "40c7a58043e38ced1995d2154c366bc0be0e2eb305dd9eb025f96255be97a436", + "31c8fadce211bafc2a31de41868fc1a4f2114e6a94cb7247ef7a7de850584011", + "d18228e6e4bcdd035f52ec239685e26f7e641e9e709f65c50fcce5127abc5862", + "6ca96a4c1f5d7676f8e6bd1dabd05ad51ae7bbda1fc57e607b0e8d65071ea96d", + "d51dd971e5934ba0a695986eb01879d508dbb993c92579d9b28574782cd7e0b7", + "58d48c6eb6a6c277838e4d71679e07e68fb0f85be1c4c4c1fe1d834de1cecdaa", + "5d2a4f5d6a7d28fde6e6e96b919af9ad18de545be180fc12f3ccfcb9c7bde224", + "c1c74304938d515f9cdc98040161272295aeec9689de3f42cd70e2dddd290ad6", + "57403cb197b4fd042e8b60dde8afc62b97f16b1feaffbab7823c8ec40a5f49fa", + "d5dba3355b47e16535bf0d4d0ac71372d1baaa0bf9b807572fcd8e70c4205736", + "d8077a465d6e4d070f7d5f012f24141d1a4ef2e87e8896da73960cf26a54c603", + "8c03a022069b8db8a3f4022289b2ee17a7411ac2c42b9f7f37335c0c0075d075", + "fb276fc33c1f3f10462378fcd112eb273ee9bd511eb3f30f58b6f1edb2df4e57", + "d24c67070dee36cf818164bae2dec3717b552c96ab42019d30f69484ea9a4dc6", + "8bda97dcba0fc6a093b5ba8e1e15e165fa671b83bef8b7b0cd614c1106a99689", + "5e97839afa6657e0febc0b48b129528ebe80368d5f23debd463575f69b7ed842", + "6dc3fa665f13b9c08c8c05a1d4c31b41732523d2b943b8eee9b43a74a4cd533b", + "781512468954ceec8c560e2522373a0c0a1b0e090af4cbaf9c4b28b2e3002369", + "3ebef35cdd1ada0dd7102e3ae0672b85fd5b7126b24cc4046a74abe14e7a2b59", + "2b1f463cb7110964aac14bb7e710ffe434b5dbbbf05edc9bb7a5c827fb36ab17", + "99350c43a72fd170226bc9b9fffaa3744056aa18c854e975f117cc594be84221", + "7b1b451aea7ca191900a670f29acf18cb968865df37f4458ba9e720ed946a0ca", + "1db4531403101cd0da03396348f9daf3cdca7b849d0ca2f15ee9fa5363f7fa75", + "04ade218503f485f0cb3a1bac183cbae7268eeeef95c5a6797176ffa49a2cb7d", + "a742f9ad1cc3b7090cf4f59d8d046fb365198deead59f9514815d7c4494d8614" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 10110, + "blockTimestampDelay": 42400 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf800000000000000000000000000000000000000000000000000000000000000fe", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "254" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 31534, + "blockTimestampDelay": 502997 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 8, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c44989b83856711dd6e2fff2fb4f6f9c007bb9771f1755a26b351a1eb3dfa452d159151dc355d1937bfc43323997c9d735e9178a3cf3e993e7b764f4bed67935ce4cec7893aedcb0a69d085a606cdee3b9838daf3fefc61d38b0f14ecdec26e33aa460f9421d6b80b366831f81a22a3a22ebd80e834740e6cd645da1790063ab1669", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "62292348944090115746545714663996537181369460052517339629743735497958525948249", + "9551156539331198657207388647210792475747533930906137829599958395912405241420", + "106958873184409346177772424067264194416183043741641706881530640155496522398372", + "43862434691542092146243210499299989128919851476248082112521904879876197521001" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 27735, + "blockTimestampDelay": 575806 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000040000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 6, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x52e3cb9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "dataAbiValues": { + "methodSignature": "handleSetMaxUsersToCheck(uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007913129639935" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 18, + "blockTimestampDelay": 20 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 8, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xa59d317da9b7ffe2a516347da9c7b4c4b6ae42e8609c59b0cb7f09830ad4b00363e88790000000000000000000000000ca35a220922f49469f8450bb7a228e9617adf1720000000000000000000000000000000000000000000000000000000000127500b6d1272bc09fd6bc67cd052a9f8747390a82481960a5bc0c6fa1495297f44265404755b83e9d47b6336cb6091295892a5cb2df7df807bb022ae2427525c5139d0000000000000000000000046a5e66341c9b0903d85f83f62619a0f98f2a2bc2", + "dataAbiValues": { + "methodSignature": "handleSetResponseModuleData(uint256,(address,address,uint256,uint256,uint256))", + "inputValues": [ + "76765970479078505087172132790769196193875293089148160874969796479246995589008", + { + "accountingExtension": "0xCa35A220922f49469f8450BB7A228e9617adf172", + "bondSize": "82690479826364110402191412604700717854937475693104284101643285021357893763685", + "bondToken": "0x0000000000000000000000000000000000127500", + "deadline": "29074060066592041470552804502606064400270805074050606064170760158631296308125", + "disputeWindow": "6453264744265472033134100691539059085253624343490" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 50550, + "blockTimestampDelay": 486500 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000080000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x51b295e30000000000000000000000000000000000000000000000000de0b6b3a7640000", + "dataAbiValues": { + "methodSignature": "handleFinalize(uint256)", + "inputValues": [ + "1000000000000000000" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7633, + "blockTimestampDelay": 413359 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000020000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xaa1a5bd9ffffffffffffffffffffffffffffffffffffffffffffffffffffffe450800000943d1cc0e0a72acefbc5f3051c02cd30f7710a00ce7f42e7f3c32805d1895c0a", + "dataAbiValues": { + "methodSignature": "handleResolveDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008687907853269984665640564039457584007794221121536", + "67050277710141099091744694012791071895666839557564171981805597144066810272778" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 25919, + "blockTimestampDelay": 76237 + }, + { + "call": { + "from": "0x00000000000000000000000000000000000a0000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 7, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x6b125a570000000000000000000000000000000000000000000000000000000000000003", + "dataAbiValues": { + "methodSignature": "handleRemoveEBORequestCreatorFinalityModule(uint256)", + "inputValues": [ + "3" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23142, + "blockTimestampDelay": 128128 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 9, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x223b137400000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000040d116271a88b78df3b16f9c87d74fbb517557fbdf0a3d8e721b30c85e3b8b69920000000000000000000000000000000000000000000000000000000000000080000000000000000000000000d7b78ae01d58862475bfc70e37701f8f9fe755e34dc2130568dfa3f1c536a456c48d15439ef9df8a3b95fc53df64359b920dab7400000000000000000000000000000000000000000000000000000000000000602bc10063184282f4a2fa990b72259004ee5f7dd720754e31cc660997590894d76ede263821e35c23c3f1b0be7c3a1243c2181fdf099f7fcb80b30c11e93e4682772569f5d9a0913ec02a8f6e442146aa449e9cfef196aa3242f95b524afc3005", + "dataAbiValues": { + "methodSignature": "handleSetRequestModuleData(uint256,(uint256,string,address,uint256))", + "inputValues": [ + "262144", + { + "accountingExtension": "0xd7b78Ae01D58862475Bfc70e37701f8f9fe755E3", + "chainId": "+\ufffd\u0000c\u0018B\ufffd\ufffd\ufffd\ufffd\ufffd\u000br%\ufffd\u0004\ufffd_}\ufffd uN1\ufffdf\t\ufffdY\b\ufffd\ufffdn\ufffd\u00268!\ufffd\\#\ufffd\ufffd\ufffd\ufffd|:\u0012C\ufffd\u0018\u001f\ufffd\t\ufffdˀ\ufffd\f\u0011\ufffd\u003eF\ufffdw%i\ufffd٠\ufffd\u003e\ufffd*\ufffdnD!F\ufffdD\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd2B\ufffd[RJ\ufffd0\u0005", + "epoch": "94572525872791919411551829050132471108268635740177933945826491102856422844818", + "paymentAmount": "35170988950503319482269276984279281525970186279109048616497784802293716986740" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 43327, + "blockTimestampDelay": 193391 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 2, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x5543846577a2896edbc40e9ca88afd969edb16fb5a69b5d4fb3f2126e81569fb7d6b4e830000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleSetResolutionModuleData(uint256,(address))", + "inputValues": [ + "54112406733890487250843239228330788486116669721842396950548875203665053044355", + { + "arbitrator": "0x0000000000000000000000000000000000000000" + } + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23840, + "blockTimestampDelay": 360469 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x7aeb6fab0000000000000000000000000000000000000000000000000000000000000000cbe948b5be54de7347b0baed46df324f3f9265f4eccf528ba7024d144ae9aa57", + "dataAbiValues": { + "methodSignature": "handleDisputeResponseBondEscalationModule(uint256,uint256)", + "inputValues": [ + "0", + "92231685454028004540036189161247674429480000235646609934922547449704212965975" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 40519, + "blockTimestampDelay": 558576 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 3, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x2047c449000000000000000000000000000000000000000000000000000000000003f4803e86cd1402413549cbe3dcdfaa14a8352d2984f61273ab07b33491fcdc2e3b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00142f0ae537572b7f06fe05e73630aa85e994443501076dc5f72bc6e055d5e3a26c", + "dataAbiValues": { + "methodSignature": "handlePay(uint256,uint256,uint256,uint256)", + "inputValues": [ + "259200", + "28281569516280294651237206632352886593805123328047145378345777697969341872983", + "115792089237316195423570985008687907853269984665640564039457584007913129246740", + "21277954345951848503413116570976869607775625029033321891944703140412013126252" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 0 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 9, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xb05752f7ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed3ffffd929f231e917bddb707d00fc6f59bb94e5adeda4d379972c38bcb82b1578194357abacca51d454e3dcd860254c9d793e6ae9fe8ddf727f5da7c3debee1528c1daa24ce7c4268aa8a1d1d86475ccd8da1cab7e02577fc2fea5127e5ea681d", + "dataAbiValues": { + "methodSignature": "handleOnSettleBondEscalation(uint256,uint256,uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "115791821200072590524970467483259647001631435429564949130744529707950148359544", + "11426805048201805963169305461898672040284463055656252044675264087198940455250", + "63376211655718351371001050529841262640998658649231171098195437570374905784349" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 19334, + "blockTimestampDelay": 360627 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000030000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 9, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a556556f60a873b54607721a734446886795cd45b739fc87b4e98200cc2a80aa91ebb4", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "50377506123831754628685281813552634495196877964909193589569641750213365459892" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 9413, + "blockTimestampDelay": 17360 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xcd10417affffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed30000000000000000000000000000000000000000000000000000000000000000", + "dataAbiValues": { + "methodSignature": "handleEscalateDispute(uint256,uint256)", + "inputValues": [ + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "0" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 11350, + "blockTimestampDelay": 359625 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000070000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 10, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xdb106ace3d280395fccb07c6a5dfd64b44fcd42e6fbf15e21cf2eb30c5cc44f82ca315a4fffffffffffffffffffffffffffffffffffffffffffffffffbd62f96e76200001dc10fb9def0b910839351104d8d9c5ed8c95449ea35af15112790eca17a2eb00000000000000000000000000000000000000000000000000000000000000020", + "dataAbiValues": { + "methodSignature": "handleSlash(uint256,uint256,uint256,uint256)", + "inputValues": [ + "27661782395063698193352940616692331668161891326097904127568031406258563257764", + "115792089237316195423570985008687907853269984665640564039457284007913129639936", + "13458182629680645130818154872710839978279753283324590313766542751800879623856", + "32" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 8 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000050000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 5, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x13a8b804000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006a00000000000000000000000000000000000000000000000000000000000000032ffffffffffffffffffffffffffffffffffffffffffffbff6dcf787ddd30000000000555555555555555555555555555555555555555555555555555555555554d71deecc06ea91cb1bcaf752d734249ead10dba3412bbacb6c075fa8b7c30035ffffbf45e8fdd9d23c6dbb7b01a4b9958df8297736bd60755149b3e532f2791dc824597fd5f03a2c14088807202aa07bc4b68baf3ca0deb361d441bf51a03c5d0000000000000000000000000000000000000000000000000000000000000002fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000000000000000064eaab522cf7b43c436e73d823a787f6f5ce91566599d9365ad0b8fd21cdb9a1d5bfd2e21584dd14c0fa6c701f8feb697bbba6ce49af97388f54d1146230a7e6fa7aa391855d8c10bfbeeb34bfb3ae21385572b581853afa321d7bf89dbd5f57db9b1f49ce0f444bc76ea892965e60b283b9dc328e4a6465618b4c8748a5f2ade06ec5448e5afebf8743992fcc788625746cef6ee48f3004e5689c2353ad78ee984d44a95bda8d0eca021f3493e4fbfd801ab43b100ab36f0f082c318d217a4d6104ae4499aa7b9ad18a39626ccae83b5d874a22fd02f6a83c7b91228bf3d7e2430000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d9d25c550d1dce4f82f73b8dcc0a1563ae3807de11f3bfd7a660529a4af8c330e00000000000000000000000000000000000000000000000000000000000003e8e414cab4a0f9dcb2a77893a7be65af8b8e310172bf2c5105d529e6504450ce03fffffffffffffffffffffffffffffffffffffffffffffffffffffffff70000000000000000000000000000000000000000000000000000000000000000000002ffffffffffffffed8da22e2dbc545f18a019ba33b78c0619a50197736d71e0df3f024687bd26450e31befce33a0f1d962f91dbde0f2b059cc80a2ca90d3d6284fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeae80fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0000142ce2b3d1cbe4ea106fe2e8abd32942f329afb37ded261596cf93935d8a63bbb6a9a6d77f775d2abf35518df0c6254bf2243b780e8d69afd1c881ce9c5618e3d1c578b78a5d13db6622a56aa2f493b31d1ceb4c42beea89d46ccbe3e471037b00000000000000000000000000000000000000000000000000000000000000020ec27f23a27cbfa51e0f2ddb99984f46ce49ff42dcd6b4384facaa9b5db182535c3d56cdb8d7a38fe0a71ddef45f635bb87ff529945c5d16269c8f0a39245d27ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4d82ed3de5a7d7ac15f480f4b01f0f6214bb27cf573c1b173faed7e4d739545db3d285e6b7cacc3607b46ca25b85c1f375fdfaaeb2da8577a7c246f60f6b4f89e3b5de5275b194e71ab4e53847c8adb1a75b9ba329aa91b9221ea17b5ad9bd7341e95fbfcb1bb7cfb751679e53740bf99ebf0446139bae7dea4dbcf6398d2390c6c0524000000000000000000000000000000000000000000000000000000000012750090a405c85e777939c587f9fd675fb88438d6404d156a5daf4dd0c3148dc8efcf4d8e13dcadaa20de6c2ea8eb3d6062b0b0ff5e1929651d791ed646a29fe7a5110000000000000000000000000000000000000000000000000000000000010000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14e68dbc99b1ca64c39e80cc676ed750909cfc9716632c25ac5060e5390d9fa64e6b4aeda2f9dbf442914a22d3d0af7bc5dcb3f3089ec0f36f689b5001b635780000000000000000000000000000000000000000000000000429d06918a70000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdffee882a645af8c7be6d0204ebf545606dbeed90041c95e2bc8361589d597b1fb48ac0752e18ab9eaccadfe8c0064e4e5f6bf8c60afb53b5eb009466dbd487f21bec08797cca6c8fc8cbb885ee5c0e5f9310a1f0f3db6fc26096fa1fd4b32a88b8247194a0110c8b274c5c0da47ccb25b6e3c31b05c77a9869213053aba5dd2536677a8374bbae18ccca0f54822d937600879ade5b1ed403f4946f8e90af14b314890000000000000000000000000000000000000000000000000000000000000001eb74aa4a874df7a335782afb334a89ab4e6c01d76b3d9cc1fe2ff916554e1e47", + "dataAbiValues": { + "methodSignature": "handleCreateRequests(uint256[],bytes32[])", + "inputValues": [ + [ + "115792089237316195423570985008687907853269984665640563737057584007913129639936", + "588949021592794776527765833580972838609161298958539652707202067097539924", + "97300149126468872946298719527718559585565665257986245164447256517436825075765", + "115791642508576853925903455799640806433872402605514539191602493507974827505949", + "90526793912853732476770378586585277343029490875048592954147148941125048351837", + "2", + "115792089237316195423570985008687907853269984665640564039457584007913129639934", + "100", + "106143904572085809367345156999994537224757041176896365712109151200852485710293", + "86764352337832765543243135124983939307060546704010196127172314433318589818618", + "55471167947462230089350410651390369929420914282189749916827202199679726999515", + "70163773172254528980983328759942934130758511185959352145159444818543825300960", + "50102955372567556491514702357555579969476127719319705342853027578991280189080", + "34949403812820303739696160479315432965725102677683363242846725312722350263649", + "2117156245181863891780898452852869243911901874320625874256816074787055460931", + "645326474426547203313410069153905908525362434349", + "71079852391896813957063743779150319803344180428654282229287260319500431274766", + "1000", + "103164065440785509990172417204742762960872811806416140653015052755049127136771", + "115792089237316195423570985008687907853269984665640564039457584007912978644992", + "2", + "115792089237316195307778895771371712429698999656952656186187599342272565600479", + "28499729936632181027456188814062791341980167576255328996025749534672244531844", + "115792089237316195423570985008687907853269984665640564039457584007913129553536", + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "9125562885114550931480067593791841579449611360550632175869852674707872703419", + "82620687095807894822672715295356445493430938527808615710009902450962702145763", + "94882287383467257979405315622849930615494021358762995058189695385862906381179", + "2", + "6676025693228821602247608155091043715251406817164054196531140988940986712659", + "41721158837053050299823051350385566222745598222798285009320417872749504257319", + "115792089237316195423570985008042581378843437462327153970303678099387766550227", + "100573334649086503842194753569836899284346481270167703051335103407971203098718", + "48617756202163964304041873980565407338979102073642939279270886685230094835173", + "17801158836147492066184211441311724727825683879567388308483181264065018107387", + "114296863769530692793417655521522383832011771556989401885926109654571538973988", + "1209600", + "65422853025283586318323521557159447223036856580449837561561715510604429062095", + "35079118706767911493932672185279904898541286022194878064121969747254118425873", + "65536", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "9453610027455146493027345783990690814816068126690203309689399735142463676326", + "35469971961326465394482855579418590623266103564687152841456260419880068986232", + "300000000000589824", + "115792089237316195423570985008687907853269984665640564039457584007913129508846", + "61589447611274418248561831207091074656114852506959387062692807541808737268874", + "87051106180010566883934928413423474515126488244096168065028690751082059668460", + "3833152557393421359718460994913442463737212702259210843010968603061444458532", + "51373949994551874532021020473078958118795590399810405978006856002821605897831", + "55414430155065263052674293890809666778911738121654525477979261100536691365001" + ], + [ + "eb74aa4a874df7a335782afb334a89ab4e6c01d76b3d9cc1fe2ff916554e1e47" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 0, + "blockTimestampDelay": 581951 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 10, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x3c26dcf864294be83a58eb073de8b343bbb0302d54fe1f8eae1dd4189b04a31ccb138c5a", + "dataAbiValues": { + "methodSignature": "handleSetEpochManager(uint256)", + "inputValues": [ + "45304249479810880359013321461885329334191304905487559402900184695003598261338" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 23, + "blockTimestampDelay": 256 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000010000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 4, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0x40605c3f59547733744bb6aa3b948ed7db0c9ec5e723d7e5a3daa8b186c2e31ada2b259600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000460000000000000000000000000000000000000000000000000000000000000001f00000000000000000000000000000000000000000000000000000000000726e0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef70f4d2274821468cd3da5812c52c59849a40988f425875b35bc9280f101986592045f36fc9b7a28b8f3d1590f4b6c576b835a31d73fd587445616649d22c380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010011316b93c90b2954e5f685ac12ec40750d50a6c8edce7db4b0055d50c61c35a731f5c594ec0a05e1ff30134f53e31b2e805bfe14a93ec6b853210f6f40d3b56a0000000000000000000000000000000000000000000000000000000000119c0000000000000000000000000000000000000000000000000000000000000d2f00000000000000000000000000000000000000000000000000000000000002518000000000000000000000000000000000000000000000000000000000001baf8090d8a8081773c0b7a3c1986ea1546f048d5c1885a326cf72b87d1836d3923e140000000000000000000000000000000000000000000000000000000000062700fea998cd10f88335187124857b44d01e11ea70a89281878e8e741a125fef2f79a0752292c05214d83f876fb696759598e3f5fcc58d2e47a4016a9a0bdd08e13cfffffffffffffffffffffffffffffffffffffffffffffffff21f494c589700001c043201f6dd629e517ee09aab46a63c0ebe0e7f714318ece9eb0906c757d7fad34455dcab64c46e9e9434db7c8b32e422233fcc5965567024146642cec91e4400000000000000000000000000000000000000000000000000000000000003e8ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed8b00a6587e7185bb7b8eb7be87650a3ed8d318489d270b725059ad4d3dfc83bddd7c00000000000000000000000000000000000000000000000000000000000d2f0013d4a27fba570c08da9361ddcc4aaf7ad2bb70eae3c954242a5ab9818cad01f5c62d28beaecf65f00bd8564836773ab69f22bb5bf9a2048036a2c034dd9d3980ffffffffffffffffffffffffffffffffffffffffffffffffffffffacf1800000667f7713d44e73183990746628bf484ad904335dde0c85c333e67a90fe8e40e3b7b6d1c75af526d51d4e69f1c0a2f84f5d8e473586313a2d6b74ebd6c2a8a3c50000000000000000000000000000000000000000000000000000000000147500fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000000000000fffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000047bfb7731084ecef826e21864db7b21685e4a54c97f8a1a295cbf3449add1424117f2b9c8a15fecec8ce2ade91243d86aefbcdec46847fc029cf7690d0f91a67000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100002e9ee5529a1d745ee8f4e52ffe5e8bced434b773b39baf3b7ff8a6e7f99a553efffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81700483c7d15a4fabaa3928f659f4a402c1327d3c7560f95e483fb582b83e6d0f658fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000058734c30ed3dcf722610a8f7220adcc5df0fefc208a923a55a22d8cb31d90bb488c340641e819d25704e47716e95c42e643c26b737268fd7482b96cdcf8112d4fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4dffeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7000a8ffd405bfa2b705196f456df871eee2fd24472dea3cebd2fe4b1c82fcfbd0a431357513138b0b48a2471b2751ed4c1ed3756af7f6238ccb73d08d59d5ebfd4d6f443d9b9146bb74c2a74bc90910eabe9901de2a9a471daaa1d059d30a112302f00000000000000000000000000000000000000000000000000000000000c9780111ab9737a308fc3a79a0aea10fda53782311459f252b0f8177ec67f8045b9de7784e8ecc9192176e71c69f519a18675e4874584c463ab293dfbfc6fc6a0239115c7ea992046436abd0d547ea1cd3f37f2c770beadf55cec20073d07933742f30000000000000000000000000000000000000000000000000000000000015180d788f87f68f2bbec419ffe75db0da226eae363225ac083f5d5ff7fb8021001304e11a3f82a6169590f64b3205f726309ea6d8e967333347473c7bb79fcb24b77814bc8d363c16b946698ab3c6e97f3f6bf32fe58989d501a0a87a239eef722c47c8271019a2e092fb450254854dfe31d6e234a0fbd06ca24ccc194273fa746610764ddcfb88ce43f53c60e2ea98a8e274e04e03d9e3333b6af2dd693edf380fc0000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4e22ed30000000000000000000000000000000000000000000000000000000000093a8085534e6e106f7258facae299849aebcd779806ca4389535ac53a64d8a2aa1a6dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000000000000000000000000000000000000000000000030000fffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c44c5807fc8c3c5c42ab9f40d12a1b94e962371575ae79ebd6b4cb24c954b2bc665542dd5dfff1b3f25a96537c5dbb8b7cb414ac7a7c2f5992aee62abbfff0d40effffdffffffffffffffffffffffffffffffffffffffffffffffffffffffcf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002fa69b525f2f8afb2ab2709532ba6c19b8f0d2d024a645112186fb67461984363fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c580ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff8ef68f613056e57f9d900c6762970980a4d4ffd3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800003a62493818a9ffc6c6d575ff0f7de1fd749868f366120706d698f1060b8bdf3800000000000000000000000000000000000000000000000000000000039ada009c7d74cfbdf6870b97239b87f02fbe69d202dd662a708acd2143de9e202aac4efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd00004b4d98f7554646696e02284ba909382873b0fe7816957b68af6f82d5f72adde26275fabe47665062a8c7d719701c60f28a0527c422a8e22137e4fb0051ffb633000000000000000000000000000000000000000000000000000000000003f480fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c58097b2a08caae117560e803d9ff487d1cae10fbdc4d7f1ce42c17c3279ffe8a62f", + "dataAbiValues": { + "methodSignature": "handleAmendEpoch(uint256,uint256[],uint256[])", + "inputValues": [ + "40405081372372013525978842751480547648830585058002218560052824541518384276886", + [ + "468704", + "115792089237316195423570985008687907853269984665640564039457584007913129639935", + "108302347374490114794247470068453275236970502802041765057741931396446790097286", + "40312865413521231599469127350250368932864074321428907992477063259908346096696", + "0", + "256", + "7776636403233298276253061663045486640566586725079590454983046077716153251239", + "22597570770411005718869703345429806287326890051333564724524690162399837402474", + "1154048", + "864000", + "151936", + "1814400", + "65515848873518125742099285123205810943868570509039343656124856800723611041300", + "403200", + "115187115288118217321521096822295133275178171810456120279525350046711931678585", + "72577015495683423729415946567495045139854135403158185023070152337249295458620", + "115792089237316195423570985008687907853269984665640564039456584007913129312256", + "12672172288865754958077163999193268232164723021684544264829499294607721617402", + "95558749249151737195728267629550015234200265821457644489891043472939732770372", + "1000", + "115792089237316195423570985008687907853269984665640564039457584007913128430336", + "75240288087120047969240812827624044409543488721765204073059881773745085209980", + "864000", + "8969637227260380969735815280626781060859691137771066048662962574156700123637", + "89637733348055167992630140218051507917741631649314216604589540142220331268480", + "115792089237316195423570985008687907853269984665640564039457584007556404084736", + "46361121975132759299427894430752904177409753528724240323705793688533277229283", + "83096265296122236816804385099747923929591995471611939729814346157993958613957", + "1340672", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "115792089237316195423570985008687907853269984665640564039457584007913129639934" + ], + [ + "0", + "115792089237316195423570985008687907853269984665640564039456584007913129639936", + "32452946160499593434845515983749491193360575568983265452848750613217421366308", + "7914008998529120091403017187811262520050336970137546822451211378327503313511", + "131072", + "65536", + "21087135597924490160278020514065782793896386251015380148550080688744482624830", + "115792089237316195423570985008687907853269984665640564039457584007913129121536", + "32673399223708471639004615736289804896918918515932326137346663860919247894104", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "40007243939561192903478474581237238277896365367969487827322469259954649369524", + "61859526995929563870496971111192669598713952570891010695340589311216477868756", + "115792089237316195423570985008687907853269984665640564039457084007913129639918", + "115792089237316195423570985008687907853269984665640564039457584007913129050122", + "65128193846263308659898635884805607662929603315266917015218026707436814797379", + "8748220186179438191757987152810977590993902718976285270336195886881194366166", + "110484216476355095116425746801137834228519025173024774277640481781885458067503", + "825216", + "7736536385935866230076509398764828221037707568349848839431264619680227506654", + "54060060382837424610463789153473438885123356029849274111165842602920746427281", + "9851791523055379701405275548384104572107430401262603791621449007965991813875", + "86400", + "97489268714271697896705846749594679479407455605280867798540626098486888104240", + "35311570264780500165106808272303065940551864765922418643875330416305075538807", + "58482257045423333150395405324167105011009172457122719577788102409466116776644", + "56317263283280387103251088560264135469139820267753028420016476996313861801569", + "3344405532647725072257448408366309387956403234721251587778117246701536510204", + "0", + "115792089237316195423570985008042581378843437462327153970303678099387767205587", + "604800", + "60304798471491061771187315716613785729266119230600130154555496580879529679469", + "115792089237316195423570985008687907853269984665640564039457584007913129377792", + "196608", + "115792089237316195423570985008687907853269984665640564039457084007913129035136", + "57798452355336411558304053412944624517533058062928609984161549502631077303341", + "96738404323568479536006817878102180689741362345052177931574407294650430783485", + "115792089237316195423570985008687907853269984665640564039457584007702676242432", + "0", + "2", + "113264981326813001426579739302796134635236993762371986774788670885055195267939", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "115792089237316195423570985008687907853269984665640564039457584007913129574400", + "115792089237316195423570985008042581378843437462327153970303678099387766341587", + "115792089237316195423570985008687907853269984665640564039457584007913129115648", + "26407801570015489846079290137767899830219430462024808264222157239198944059192", + "60480000", + "70782466465377481098040837367240474665534298962720260604428952780686496541774", + "115792089237316195423570985008687907853269984665640564039457584007913129443328", + "34060566601264907942317606397667532019345739303935969127430028569503353986530", + "44535110834235003675732683884032315076716567284433000855253588131861869082163", + "259200", + "115792089237316195423570985008687907853269984665640564039457584007913129035136", + "68614846985407483661098704758783976762533480380480839604392799459043936085551" + ] + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 7165, + "blockTimestampDelay": 348336 + }, + { + "call": { + "from": "0x0000000000000000000000000000000000090000", + "to": "0xa647ff3c36cfab592509e13860ab8c4f28781a66", + "nonce": 11, + "value": "0x0", + "gasLimit": 12500000, + "gasPrice": "0x1", + "gasFeeCap": "0x0", + "gasTipCap": "0x0", + "data": "0xd1a5565500000000000000000000000000000000000000000000000003f0ffb1376b8b00", + "dataAbiValues": { + "methodSignature": "handleRevokeModule(uint256)", + "inputValues": [ + "284007913128430336" + ] + }, + "AccessList": null, + "SkipAccountChecks": false + }, + "blockNumberDelay": 10, + "blockTimestampDelay": 506673 + } +] \ No newline at end of file diff --git a/test/invariants/fuzz/corpus/coverage_report.html b/test/invariants/fuzz/corpus/coverage_report.html new file mode 100644 index 0000000..dd24bdf --- /dev/null +++ b/test/invariants/fuzz/corpus/coverage_report.html @@ -0,0 +1,197588 @@ + +
+ + +Files: | 65 |
---|---|
Lines: | 8454 |
Covered: | ++ + + + + + + + 371 / 1371 (27.1%) + + | +
Lines covered: | +0 / 3 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule} from '../interfaces/IModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '../interfaces/IOracle.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ import {Validator} from './Validator.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ abstract contract Module is Validator, IModule {+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ constructor(IOracle _oracle) Validator(_oracle) {}+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is the oracle+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyOracle() {+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ if (msg.sender != address(ORACLE)) revert Module_OnlyOracle();+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ function finalizeRequest(+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ address _finalizer+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ ) external virtual onlyOracle {}+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ function validateParameters(bytes calldata _encodedParameters) external view virtual returns (bool _valid) {}+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 161 (0.6%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '../interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {IDisputeModule} from '../interfaces/modules/dispute/IDisputeModule.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ import {IFinalityModule} from '../interfaces/modules/finality/IFinalityModule.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ import {IRequestModule} from '../interfaces/modules/request/IRequestModule.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ import {IResolutionModule} from '../interfaces/modules/resolution/IResolutionModule.sol';+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ import {IResponseModule} from '../interfaces/modules/response/IResponseModule.sol';+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ import {ValidatorLib} from '../libraries/ValidatorLib.sol';+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ contract Oracle is IOracle {+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ using ValidatorLib for *;+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => uint256 _finalizedAt) public finalizedAt;+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _id => uint256 _requestCreatedAt) public requestCreatedAt;+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _id => uint256 _responseCreatedAt) public responseCreatedAt;+ + |
+
25 | + + ++ + | ++ + | + + + + ++ + + + | +
26 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _id => uint256 _disputeCreatedAt) public disputeCreatedAt;+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _responseId => bytes32 _disputeId) public disputeOf;+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => DisputeStatus _status) public disputeStatus;+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ mapping(uint256 _requestNumber => bytes32 _id) public nonceToRequestId;+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => bytes32 _finalizedResponseId) public finalizedResponseId;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => mapping(address _module => bool _allowed)) public allowedModule;+ + |
+
43 | + + ++ + | ++ + | + + + + ++ + + + | +
44 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => mapping(address _user => bool _isParticipant)) public isParticipant;+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * @notice The list of the response ids for each request+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => bytes _responseIds) internal _responseIds;+ + |
+
51 | + + ++ + | ++ + | + + + + ++ + + + | +
52 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ uint256 public totalRequestCount;+ + |
+
54 | + + ++ + | ++ + | + + + + ++ + + + | +
55 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(Request calldata _request, bytes32 _ipfsHash) external returns (bytes32 _requestId) {+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ _requestId = _createRequest(_request, _ipfsHash);+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ function createRequests(+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ Request[] calldata _requestsData,+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] calldata _ipfsHashes+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes32[] memory _batchRequestsIds) {+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestsAmount = _requestsData.length;+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ _batchRequestsIds = new bytes32[](_requestsAmount);+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 _i = 0; _i < _requestsAmount;) {+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ _batchRequestsIds[_i] = _createRequest(_requestsData[_i], _ipfsHashes[_i]);+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ ++_i;+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ function listRequestIds(uint256 _startFrom, uint256 _batchSize) external view returns (bytes32[] memory _list) {+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ uint256 _totalRequestsCount = totalRequestCount;+ + |
+
79 | + + ++ + | ++ + | + + + + ++ + + + | +
80 | + + ++ + | ++ + | + + + + +
+
+ // If trying to collect non-existent ids only, return empty array+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ if (_startFrom > _totalRequestsCount) {+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ return _list;+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ if (_batchSize > _totalRequestsCount - _startFrom) {+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ _batchSize = _totalRequestsCount - _startFrom;+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ _list = new bytes32[](_batchSize);+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ uint256 _index;+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ while (_index < _batchSize) {+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ _list[_index] = nonceToRequestId[_startFrom + _index];+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ ++_index;+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
100 | + + ++ + | ++ + | + + + + ++ + + + | +
101 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ function proposeResponse(+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ Request calldata _request,+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ Response calldata _response+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes32 _responseId) {+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ _responseId = ValidatorLib._validateResponse(_request, _response);+ + |
+
107 | + + ++ + | ++ + | + + + + ++ + + + | +
108 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _response.requestId;+ + |
+
109 | + + ++ + | ++ + | + + + + ++ + + + | +
110 | + + ++ + | ++ + | + + + + +
+
+ if (requestCreatedAt[_requestId] == 0) {+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidRequest();+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ // The caller must be the proposer, unless the response is coming from a dispute module+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ if (msg.sender != _response.proposer && msg.sender != address(_request.disputeModule)) {+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidProposer();+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + ++ + | ++ + | + + + + +
+
+ // Can't propose the same response twice+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ if (responseCreatedAt[_responseId] != 0) {+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_ResponseAlreadyProposed();+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
123 | + + ++ + | ++ + | + + + + ++ + + + | +
124 | + + ++ + | ++ + | + + + + +
+
+ if (finalizedAt[_requestId] != 0) {+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_AlreadyFinalized(_requestId);+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ isParticipant[_requestId][_response.proposer] = true;+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ IResponseModule(_request.responseModule).propose(_request, _response, msg.sender);+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ _responseIds[_requestId] = abi.encodePacked(_responseIds[_requestId], _responseId);+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ responseCreatedAt[_responseId] = block.timestamp;+ + |
+
131 | + + ++ + | ++ + | + + + + ++ + + + | +
132 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseProposed(_requestId, _responseId, _response);+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
134 | + + ++ + | ++ + | + + + + ++ + + + | +
135 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ function disputeResponse(+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ Request calldata _request,+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ Response calldata _response,+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ Dispute calldata _dispute+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes32 _disputeId) {+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _responseId;+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ (_responseId, _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);+ + |
+
143 | + + ++ + | ++ + | + + + + ++ + + + | +
144 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _dispute.requestId;+ + |
+
145 | + + ++ + | ++ + | + + + + ++ + + + | +
146 | + + ++ + | ++ + | + + + + +
+
+ if (responseCreatedAt[_responseId] == 0) {+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidResponse();+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
149 | + + ++ + | ++ + | + + + + ++ + + + | +
150 | + + ++ + | ++ + | + + + + +
+
+ if (_dispute.proposer != _response.proposer) {+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidProposer();+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
153 | + + ++ + | ++ + | + + + + ++ + + + | +
154 | + + ++ + | ++ + | + + + + +
+
+ if (_dispute.disputer != msg.sender) {+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDisputer();+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
157 | + + ++ + | ++ + | + + + + ++ + + + | +
158 | + + ++ + | ++ + | + + + + +
+
+ if (finalizedAt[_requestId] != 0) {+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_AlreadyFinalized(_requestId);+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
161 | + + ++ + | ++ + | + + + + ++ + + + | +
162 | + + ++ + | ++ + | + + + + +
+
+ if (disputeOf[_responseId] != bytes32(0)) {+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_ResponseAlreadyDisputed(_responseId);+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ isParticipant[_requestId][msg.sender] = true;+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ disputeStatus[_disputeId] = DisputeStatus.Active;+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ disputeOf[_responseId] = _disputeId;+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ disputeCreatedAt[_disputeId] = block.timestamp;+ + |
+
169 | + + ++ + | ++ + | + + + + ++ + + + | +
170 | + + ++ + | ++ + | + + + + +
+
+ IDisputeModule(_request.disputeModule).disputeResponse(_request, _response, _dispute);+ + |
+
171 | + + ++ + | ++ + | + + + + ++ + + + | +
172 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseDisputed(_responseId, _disputeId, _dispute);+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
174 | + + ++ + | ++ + | + + + + ++ + + + | +
175 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ function escalateDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external {+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ (bytes32 _responseId, bytes32 _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);+ + |
+
178 | + + ++ + | ++ + | + + + + ++ + + + | +
179 | + + ++ + | ++ + | + + + + +
+
+ if (disputeCreatedAt[_disputeId] == 0) {+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDispute();+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
182 | + + ++ + | ++ + | + + + + ++ + + + | +
183 | + + ++ + | ++ + | + + + + +
+
+ if (disputeOf[_responseId] != _disputeId) {+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDisputeId(_disputeId);+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
186 | + + ++ + | ++ + | + + + + ++ + + + | +
187 | + + ++ + | ++ + | + + + + +
+
+ if (disputeStatus[_disputeId] != DisputeStatus.Active) {+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_CannotEscalate(_disputeId);+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
190 | + + ++ + | ++ + | + + + + ++ + + + | +
191 | + + ++ + | ++ + | + + + + +
+
+ // Change the dispute status+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ disputeStatus[_disputeId] = DisputeStatus.Escalated;+ + |
+
193 | + + ++ + | ++ + | + + + + ++ + + + | +
194 | + + ++ + | ++ + | + + + + +
+
+ // Notify the dispute module about the escalation+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ IDisputeModule(_request.disputeModule).onDisputeStatusChange(_disputeId, _request, _response, _dispute);+ + |
+
196 | + + ++ + | ++ + | + + + + ++ + + + | +
197 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeEscalated(msg.sender, _disputeId, _dispute);+ + |
+
198 | + + ++ + | ++ + | + + + + ++ + + + | +
199 | + + ++ + | ++ + | + + + + +
+
+ if (address(_request.resolutionModule) != address(0)) {+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ // Initiate the resolution+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ IResolutionModule(_request.resolutionModule).startResolution(_disputeId, _request, _response, _dispute);+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
204 | + + ++ + | ++ + | + + + + ++ + + + | +
205 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ function resolveDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external {+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ (bytes32 _responseId, bytes32 _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);+ + |
+
208 | + + ++ + | ++ + | + + + + ++ + + + | +
209 | + + ++ + | ++ + | + + + + +
+
+ if (disputeCreatedAt[_disputeId] == 0) {+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDispute();+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
212 | + + ++ + | ++ + | + + + + ++ + + + | +
213 | + + ++ + | ++ + | + + + + +
+
+ if (disputeOf[_responseId] != _disputeId) {+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDisputeId(_disputeId);+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
216 | + + ++ + | ++ + | + + + + ++ + + + | +
217 | + + ++ + | ++ + | + + + + +
+
+ // Revert if the dispute is not active nor escalated+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ DisputeStatus _currentStatus = disputeStatus[_disputeId];+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ if (_currentStatus != DisputeStatus.Active && _currentStatus != DisputeStatus.Escalated) {+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_CannotResolve(_disputeId);+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
222 | + + ++ + | ++ + | + + + + ++ + + + | +
223 | + + ++ + | ++ + | + + + + +
+
+ if (address(_request.resolutionModule) == address(0)) {+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_NoResolutionModule(_disputeId);+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
226 | + + ++ + | ++ + | + + + + ++ + + + | +
227 | + + ++ + | ++ + | + + + + +
+
+ IResolutionModule(_request.resolutionModule).resolveDispute(_disputeId, _request, _response, _dispute);+ + |
+
228 | + + ++ + | ++ + | + + + + ++ + + + | +
229 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeResolved(_disputeId, _dispute, msg.sender);+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
231 | + + ++ + | ++ + | + + + + ++ + + + | +
232 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ function updateDisputeStatus(+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ Request calldata _request,+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ Response calldata _response,+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ Dispute calldata _dispute,+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ DisputeStatus _status+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ (bytes32 _responseId, bytes32 _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);+ + |
+
240 | + + ++ + | ++ + | + + + + ++ + + + | +
241 | + + ++ + | ++ + | + + + + +
+
+ if (disputeCreatedAt[_disputeId] == 0) {+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDispute();+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
244 | + + ++ + | ++ + | + + + + ++ + + + | +
245 | + + ++ + | ++ + | + + + + +
+
+ if (disputeOf[_responseId] != _disputeId) {+ + |
+
246 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidDisputeId(_disputeId);+ + |
+
247 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
248 | + + ++ + | ++ + | + + + + ++ + + + | +
249 | + + ++ + | ++ + | + + + + +
+
+ if (msg.sender != address(_request.disputeModule) && msg.sender != address(_request.resolutionModule)) {+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_NotDisputeOrResolutionModule(msg.sender);+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ disputeStatus[_disputeId] = _status;+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ IDisputeModule(_request.disputeModule).onDisputeStatusChange(_disputeId, _request, _response, _dispute);+ + |
+
254 | + + ++ + | ++ + | + + + + ++ + + + | +
255 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeStatusUpdated(_disputeId, _dispute, _status);+ + |
+
256 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
257 | + + ++ + | ++ + | + + + + ++ + + + | +
258 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ function getResponseIds(bytes32 _requestId) public view returns (bytes32[] memory _ids) {+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ bytes memory _responses = _responseIds[_requestId];+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ uint256 _length = _responses.length / 32;+ + |
+
262 | + + ++ + | ++ + | + + + + ++ + + + | +
263 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
264 | + + ++ + | ++ + | + + + + +
+
+ for { let _i := 0 } lt(_i, _length) { _i := add(_i, 1) } {+ + |
+
265 | + + ++ + | ++ + | + + + + +
+
+ // Increase the size of the array+ + |
+
266 | + + ++ + | ++ + | + + + + +
+
+ mstore(_ids, add(mload(_ids), 1))+ + |
+
267 | + + ++ + | ++ + | + + + + ++ + + + | +
268 | + + ++ + | ++ + | + + + + +
+
+ // Store the response id in the array+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ mstore(add(_ids, add(32, mul(_i, 32))), mload(add(_responses, add(32, mul(_i, 32)))))+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
271 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
273 | + + ++ + | ++ + | + + + + ++ + + + | +
274 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IOracle+ + |
+
275 | + + ++ + | ++ + | + + + + +
+
+ function finalize(IOracle.Request calldata _request, IOracle.Response calldata _response) external {+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId;+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _responseId;+ + |
+
278 | + + ++ + | ++ + | + + + + ++ + + + | +
279 | + + ++ + | ++ + | + + + + +
+
+ // Finalizing without a response (by passing a Response with `requestId` == 0x0)+ + |
+
280 | + + ++ + | ++ + | + + + + +
+
+ if (_response.requestId == bytes32(0)) {+ + |
+
281 | + + ++ + | ++ + | + + + + +
+
+ _requestId = _finalizeWithoutResponse(_request);+ + |
+
282 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
283 | + + ++ + | ++ + | + + + + +
+
+ (_requestId, _responseId) = _finalizeWithResponse(_request, _response);+ + |
+
284 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
285 | + + ++ + | ++ + | + + + + ++ + + + | +
286 | + + ++ + | ++ + | + + + + +
+
+ if (finalizedAt[_requestId] != 0) {+ + |
+
287 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_AlreadyFinalized(_requestId);+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
289 | + + ++ + | ++ + | + + + + ++ + + + | +
290 | + + ++ + | ++ + | + + + + +
+
+ finalizedAt[_requestId] = block.timestamp;+ + |
+
291 | + + ++ + | ++ + | + + + + ++ + + + | +
292 | + + ++ + | ++ + | + + + + +
+
+ if (address(_request.finalityModule) != address(0)) {+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ IFinalityModule(_request.finalityModule).finalizeRequest(_request, _response, msg.sender);+ + |
+
294 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
295 | + + ++ + | ++ + | + + + + ++ + + + | +
296 | + + ++ + | ++ + | + + + + +
+
+ if (address(_request.resolutionModule) != address(0)) {+ + |
+
297 | + + ++ + | ++ + | + + + + +
+
+ IResolutionModule(_request.resolutionModule).finalizeRequest(_request, _response, msg.sender);+ + |
+
298 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
299 | + + ++ + | ++ + | + + + + ++ + + + | +
300 | + + ++ + | ++ + | + + + + +
+
+ IDisputeModule(_request.disputeModule).finalizeRequest(_request, _response, msg.sender);+ + |
+
301 | + + ++ + | ++ + | + + + + +
+
+ IResponseModule(_request.responseModule).finalizeRequest(_request, _response, msg.sender);+ + |
+
302 | + + ++ + | ++ + | + + + + +
+
+ IRequestModule(_request.requestModule).finalizeRequest(_request, _response, msg.sender);+ + |
+
303 | + + ++ + | ++ + | + + + + ++ + + + | +
304 | + + ++ + | ++ + | + + + + +
+
+ emit OracleRequestFinalized(_requestId, _responseId, msg.sender);+ + |
+
305 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
306 | + + ++ + | ++ + | + + + + ++ + + + | +
307 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
308 | + + ++ + | ++ + | + + + + +
+
+ * @notice Finalizing a request that either does not have any responses or only has disputed responses+ + |
+
309 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
310 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to be finalized+ + |
+
311 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The id of the finalized request+ + |
+
312 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
313 | + + ++ + | ++ + | + + + + +
+
+ function _finalizeWithoutResponse(IOracle.Request calldata _request) internal view returns (bytes32 _requestId) {+ + |
+
314 | + + ++ + | ++ + | + + + + +
+
+ _requestId = ValidatorLib._getId(_request);+ + |
+
315 | + + ++ + | ++ + | + + + + ++ + + + | +
316 | + + ++ + | ++ + | + + + + +
+
+ if (requestCreatedAt[_requestId] == 0) {+ + |
+
317 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidRequest();+ + |
+
318 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
319 | + + ++ + | ++ + | + + + + ++ + + + | +
320 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] memory _responses = getResponseIds(_requestId);+ + |
+
321 | + + ++ + | ++ + | + + + + +
+
+ uint256 _responsesAmount = _responses.length;+ + |
+
322 | + + ++ + | ++ + | + + + + ++ + + + | +
323 | + + ++ + | ++ + | + + + + +
+
+ if (_responsesAmount != 0) {+ + |
+
324 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 _i = 0; _i < _responsesAmount;) {+ + |
+
325 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _responseId = _responses[_i];+ + |
+
326 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = disputeOf[_responseId];+ + |
+
327 | + + ++ + | ++ + | + + + + +
+
+ DisputeStatus _status = disputeStatus[_disputeId];+ + |
+
328 | + + ++ + | ++ + | + + + + ++ + + + | +
329 | + + ++ + | ++ + | + + + + +
+
+ // If there is an undisputed response or with a lost dispute, must finalize with it+ + |
+
330 | + + ++ + | ++ + | + + + + +
+
+ if (_status == DisputeStatus.None || _status == DisputeStatus.Lost) {+ + |
+
331 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_FinalizableResponseExists(_responseId);+ + |
+
332 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
333 | + + ++ + | ++ + | + + + + ++ + + + | +
334 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
335 | + + ++ + | ++ + | + + + + +
+
+ ++_i;+ + |
+
336 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
337 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
338 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
339 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
340 | + + ++ + | ++ + | + + + + ++ + + + | +
341 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ * @notice Finalizing a request with a response+ + |
+
343 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
344 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to be finalized+ + |
+
345 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The final response+ + |
+
346 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The id of the finalized request+ + |
+
347 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseId The id of the final response+ + |
+
348 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
349 | + + ++ + | ++ + | + + + + +
+
+ function _finalizeWithResponse(+ + |
+
350 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
351 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ ) internal returns (bytes32 _requestId, bytes32 _responseId) {+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ _responseId = ValidatorLib._validateResponse(_request, _response);+ + |
+
354 | + + ++ + | ++ + | + + + + ++ + + + | +
355 | + + ++ + | ++ + | + + + + +
+
+ _requestId = _response.requestId;+ + |
+
356 | + + ++ + | ++ + | + + + + ++ + + + | +
357 | + + ++ + | ++ + | + + + + +
+
+ if (responseCreatedAt[_responseId] == 0) {+ + |
+
358 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidResponse();+ + |
+
359 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
360 | + + ++ + | ++ + | + + + + ++ + + + | +
361 | + + ++ + | ++ + | + + + + +
+
+ DisputeStatus _status = disputeStatus[disputeOf[_responseId]];+ + |
+
362 | + + ++ + | ++ + | + + + + ++ + + + | +
363 | + + ++ + | ++ + | + + + + +
+
+ if (_status != DisputeStatus.None && _status != DisputeStatus.Lost) {+ + |
+
364 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidFinalizedResponse();+ + |
+
365 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
366 | + + ++ + | ++ + | + + + + ++ + + + | +
367 | + + ++ + | ++ + | + + + + +
+
+ finalizedResponseId[_requestId] = _responseId;+ + |
+
368 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
369 | + + ++ + | ++ + | + + + + ++ + + + | +
370 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
371 | + + ++ + | ++ + | + + + + +
+
+ * @notice Stores a request in the contract and configures it in the modules+ + |
+
372 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
373 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to be created+ + |
+
374 | + + ++ + | ++ + | + + + + +
+
+ * @param _ipfsHash The hashed IPFS CID of the metadata json+ + |
+
375 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The id of the created request+ + |
+
376 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
377 | + + ++ + | ++ + | + + + + +
+
+ function _createRequest(Request memory _request, bytes32 _ipfsHash) internal returns (bytes32 _requestId) {+ + |
+
378 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestNonce = totalRequestCount++;+ + |
+
379 | + + ++ + | ++ + | + + + + ++ + + + | +
380 | + + ++ + | ++ + | + + + + +
+
+ if (_request.nonce == 0) _request.nonce = uint96(_requestNonce);+ + |
+
381 | + + ++ + | ++ + | + + + + ++ + + + | +
382 | + + ++ + | ++ + | + + + + +
+
+ if (msg.sender != _request.requester || _requestNonce != _request.nonce) {+ + |
+
383 | + + ++ + | ++ + | + + + + +
+
+ revert Oracle_InvalidRequestBody();+ + |
+
384 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
385 | + + ++ + | ++ + | + + + + ++ + + + | +
386 | + + ++ + | ++ + | + + + + +
+
+ _requestId = ValidatorLib._getId(_request);+ + |
+
387 | + + ++ + | ++ + | + + + + +
+
+ nonceToRequestId[_requestNonce] = _requestId;+ + |
+
388 | + + ++ + | ++ + | + + + + +
+
+ requestCreatedAt[_requestId] = block.timestamp;+ + |
+
389 | + + ++ + | ++ + | + + + + ++ + + + | +
390 | + + ++ + | ++ + | + + + + +
+
+ allowedModule[_requestId][_request.requestModule] = true;+ + |
+
391 | + + ++ + | ++ + | + + + + +
+
+ allowedModule[_requestId][_request.responseModule] = true;+ + |
+
392 | + + ++ + | ++ + | + + + + +
+
+ allowedModule[_requestId][_request.disputeModule] = true;+ + |
+
393 | + + ++ + | ++ + | + + + + +
+
+ allowedModule[_requestId][_request.resolutionModule] = true;+ + |
+
394 | + + ++ + | ++ + | + + + + +
+
+ allowedModule[_requestId][_request.finalityModule] = true;+ + |
+
395 | + + ++ + | ++ + | + + + + ++ + + + | +
396 | + + ++ + | ++ + | + + + + +
+
+ isParticipant[_requestId][msg.sender] = true;+ + |
+
397 | + + ++ + | ++ + | + + + + ++ + + + | +
398 | + + ++ + | ++ + | + + + + +
+
+ IRequestModule(_request.requestModule).createRequest(_requestId, _request.requestModuleData, msg.sender);+ + |
+
399 | + + ++ + | ++ + | + + + + ++ + + + | +
400 | + + ++ + | ++ + | + + + + +
+
+ emit RequestCreated(_requestId, _request, _ipfsHash);+ + |
+
401 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
402 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
403 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +2 / 17 (11.8%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle, IValidator} from '../interfaces/IValidator.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {ValidatorLib} from '../libraries/ValidatorLib.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ abstract contract Validator is IValidator {+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IValidator+ + |
+
10 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ IOracle public immutable ORACLE;+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ constructor(IOracle _oracle) {+ + |
+
13 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ORACLE = _oracle;+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @notice Computes the id a given request+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @return _id The id the request+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ function _getId(IOracle.Request calldata _request) internal pure returns (bytes32 _id) {+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ _id = ValidatorLib._getId(_request);+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
25 | + + ++ + | ++ + | + + + + ++ + + + | +
26 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * @notice Computes the id a given response+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @return _id The id the response+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ function _getId(IOracle.Response calldata _response) internal pure returns (bytes32 _id) {+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ _id = ValidatorLib._getId(_response);+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @notice Computes the id a given dispute+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @return _id The id the dispute+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ function _getId(IOracle.Dispute calldata _dispute) internal pure returns (bytes32 _id) {+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ _id = ValidatorLib._getId(_dispute);+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
45 | + + ++ + | ++ + | + + + + ++ + + + | +
46 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness and existance of a request-response pair+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseId The id the response+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ function _validateResponse(+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (bytes32 _responseId) {+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ _responseId = ValidatorLib._validateResponse(_request, _response);+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ if (ORACLE.responseCreatedAt(_responseId) == 0) revert Validator_InvalidResponse();+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
61 | + + ++ + | ++ + | + + + + ++ + + + | +
62 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness of a request-dispute pair+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id the dispute+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ function _validateDispute(+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (bytes32 _disputeId) {+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ _disputeId = ValidatorLib._validateDispute(_request, _dispute);+ + |
+
74 | + + ++ + | ++ + | + + + + ++ + + + | +
75 | + + ++ + | ++ + | + + + + +
+
+ if (ORACLE.disputeCreatedAt(_disputeId) == 0) revert Validator_InvalidDispute();+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness of a response-dispute pair+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id the dispute+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ function _validateDispute(+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (bytes32 _disputeId) {+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ _disputeId = ValidatorLib._validateDispute(_response, _dispute);+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ if (ORACLE.disputeCreatedAt(_disputeId) == 0) revert Validator_InvalidDispute();+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
93 | + + ++ + | ++ + | + + + + ++ + + + | +
94 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness of a request-response-dispute triplet+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseId The id the response+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id the dispute+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ function _validateResponseAndDispute(+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (bytes32 _responseId, bytes32 _disputeId) {+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ (_responseId, _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);+ + |
+
109 | + + ++ + | ++ + | + + + + ++ + + + | +
110 | + + ++ + | ++ + | + + + + +
+
+ if (ORACLE.disputeCreatedAt(_disputeId) == 0) revert Validator_InvalidDispute();+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from './IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IValidator} from './IValidator.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @title Module+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @notice Abstract contract to be inherited by all modules+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ interface IModule is IValidator {+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a request is finalized+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request that was finalized+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The final response+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalizer The address that initiated the finalization+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ event RequestFinalized(bytes32 indexed _requestId, IOracle.Response _response, address _finalizer);+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the caller is not the oracle+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ error Module_OnlyOracle();+ + |
+
32 | + + ++ + | ++ + | + + + + ++ + + + | +
33 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @notice Finalizes the request+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request being finalized+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The final response+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalizer The address that initiated the finalization+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ function finalizeRequest(+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ address _finalizer+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates parameters prior to creating a request+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @param _encodedParameters The encoded parameters for the request+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @return _valid Boolean indicating if the parameters are valid or not+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ function validateParameters(bytes calldata _encodedParameters) external view returns (bool _valid);+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the name of the module.+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * @return _moduleName The name of the module.+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ function moduleName() external view returns (string memory _moduleName);+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ * @title Oracle+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ * @notice The main contract storing requests, responses and disputes, and routing the calls to the modules.+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ interface IOracle {+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
12 | + + ++ + | ++ + | + + + + ++ + + + | +
13 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a request is created+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the created request+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request that has been created+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @param _ipfsHash The hashed IPFS CID of the metadata json+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ event RequestCreated(bytes32 indexed _requestId, Request _request, bytes32 _ipfsHash);+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a response is proposed+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The id of the proposed response+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response that has been proposed+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ event ResponseProposed(bytes32 indexed _requestId, bytes32 indexed _responseId, Response _response);+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a response is disputed+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The id of the response being disputed+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that has been created+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ event ResponseDisputed(bytes32 indexed _responseId, bytes32 indexed _disputeId, Dispute _dispute);+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a request is finalized+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request being finalized+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The id of the final response, may be empty+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @param _caller The address of the user who finalized the request+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ event OracleRequestFinalized(bytes32 indexed _requestId, bytes32 indexed _responseId, address indexed _caller);+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a dispute is escalated+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * @param _caller The address of the user who escalated the dispute+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute being escalated+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being escalated+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ event DisputeEscalated(address indexed _caller, bytes32 indexed _disputeId, Dispute _dispute);+ + |
+
52 | + + ++ + | ++ + | + + + + ++ + + + | +
53 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a dispute's status changes+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being updated+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The new dispute status+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ event DisputeStatusUpdated(bytes32 indexed _disputeId, Dispute _dispute, DisputeStatus _status);+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a dispute is resolved+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute being resolved+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being updated+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @param _caller The address of the user who resolved the dispute+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ event DisputeResolved(bytes32 indexed _disputeId, Dispute _dispute, address indexed _caller);+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when an unauthorized caller is trying to change a dispute's status+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ * @param _caller The caller of the function+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_NotDisputeOrResolutionModule(address _caller);+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to resolve a dispute of a request without resolution module+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute being+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_NoResolutionModule(bytes32 _disputeId);+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when disputing a response that is already disputed+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The id of the response being disputed+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_ResponseAlreadyDisputed(bytes32 _responseId);+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to dispute or finalize a request that is already finalized+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_AlreadyFinalized(bytes32 _requestId);+ + |
+
96 | + + ++ + | ++ + | + + + + ++ + + + | +
97 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to finalize a request with an invalid response+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidFinalizedResponse();+ + |
+
101 | + + ++ + | ++ + | + + + + ++ + + + | +
102 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to finalize a request without a response while there is, in fact, a response+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The id of the response that would be suitable for finalization+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_FinalizableResponseExists(bytes32 _responseId);+ + |
+
107 | + + ++ + | ++ + | + + + + ++ + + + | +
108 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to resolve or escalate an invalid dispute+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidDisputeId(bytes32 _disputeId);+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to escalate a dispute that's not in the active state+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_CannotEscalate(bytes32 _disputeId);+ + |
+
119 | + + ++ + | ++ + | + + + + ++ + + + | +
120 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to resolve a dispute that's not in the active nor escalated state+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_CannotResolve(bytes32 _disputeId);+ + |
+
125 | + + ++ + | ++ + | + + + + ++ + + + | +
126 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to create a request with invalid parameters+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidRequestBody();+ + |
+
130 | + + ++ + | ++ + | + + + + ++ + + + | +
131 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to propose a response with invalid parameters+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidResponseBody();+ + |
+
135 | + + ++ + | ++ + | + + + + ++ + + + | +
136 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to create a dispute with invalid parameters+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidDisputeBody();+ + |
+
140 | + + ++ + | ++ + | + + + + ++ + + + | +
141 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the request provided does not exist+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidRequest();+ + |
+
145 | + + ++ + | ++ + | + + + + ++ + + + | +
146 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the response provided does not exist+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidResponse();+ + |
+
150 | + + ++ + | ++ + | + + + + ++ + + + | +
151 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the dispute provided does not exist+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidDispute();+ + |
+
155 | + + ++ + | ++ + | + + + + ++ + + + | +
156 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when response has been already proposed+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_ResponseAlreadyProposed();+ + |
+
160 | + + ++ + | ++ + | + + + + ++ + + + | +
161 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the proposer is invalid+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidProposer();+ + |
+
165 | + + ++ + | ++ + | + + + + ++ + + + | +
166 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the disputer is invalid+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ error Oracle_InvalidDisputer();+ + |
+
170 | + + ++ + | ++ + | + + + + ++ + + + | +
171 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ ENUMS+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
174 | + + ++ + | ++ + | + + + + ++ + + + | +
175 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ * @notice All available statuses a dispute can have+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ enum DisputeStatus {+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ None, // The dispute has not been started yet+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ Active, // The dispute is active and can be escalated or resolved+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ Escalated, // The dispute is being resolved by the resolution module+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ Won, // The disputer has won the dispute+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ Lost, // The disputer has lost the dispute+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ NoResolution // The dispute was inconclusive+ + |
+
185 | + + ++ + | ++ + | + + + + ++ + + + | +
186 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
187 | + + ++ + | ++ + | + + + + ++ + + + | +
188 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
191 | + + ++ + | ++ + | + + + + ++ + + + | +
192 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ * @notice Request as stored in the oracle+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ * @param requestModule The address of the request module+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ * @param responseModule The address of the response module+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ * @param disputeModule The address of the dispute module+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ * @param resolutionModule The address of the resolution module+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ * @param finalityModule The address of the finality module+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ * @param requestModuleData The parameters for the request module+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ * @param responseModuleData The parameters for the response module+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ * @param disputeModuleData The parameters for the dispute module+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ * @param resolutionModuleData The parameters for the resolution module+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ * @param finalityModuleData The parameters for the finality module+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ * @param requester The address of the user who created the request+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ * @param nonce The nonce of the request+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ struct Request {+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ uint96 nonce;+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ address requester;+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ address requestModule;+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ address responseModule;+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ address disputeModule;+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ address resolutionModule;+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ address finalityModule;+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ bytes requestModuleData;+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ bytes responseModuleData;+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ bytes disputeModuleData;+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ bytes resolutionModuleData;+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ bytes finalityModuleData;+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
221 | + + ++ + | ++ + | + + + + ++ + + + | +
222 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ * @notice The response struct+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ * @param proposer The address of the user who proposed the response+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ * @param requestId The id of the request this response is proposed for+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ * @param response The encoded data of the response+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
228 | + + ++ + | ++ + | + + + + +
+
+ struct Response {+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ address proposer;+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ bytes32 requestId;+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ bytes response;+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
233 | + + ++ + | ++ + | + + + + ++ + + + | +
234 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ * @notice The dispute struct+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ * @param disputer The address of the user who started the dispute+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ * @param proposer The address of the user who proposed the response+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ * @param responseId The id of the response being disputed+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ * @param requestId The id of the request this dispute is related to+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ struct Dispute {+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ address disputer;+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ address proposer;+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId;+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ bytes32 requestId;+ + |
+
246 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
247 | + + ++ + | ++ + | + + + + ++ + + + | +
248 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
251 | + + ++ + | ++ + | + + + + ++ + + + | +
252 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the dispute id for a given response+ + |
+
254 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
255 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The response id to get the dispute for+ + |
+
256 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id of the dispute associated with the given response+ + |
+
257 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ function disputeOf(bytes32 _responseId) external view returns (bytes32 _disputeId);+ + |
+
259 | + + ++ + | ++ + | + + + + ++ + + + | +
260 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the total number of requests stored in the oracle+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
263 | + + ++ + | ++ + | + + + + +
+
+ * @return _count The total number of requests+ + |
+
264 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
265 | + + ++ + | ++ + | + + + + +
+
+ function totalRequestCount() external view returns (uint256 _count);+ + |
+
266 | + + ++ + | ++ + | + + + + ++ + + + | +
267 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the status of a dispute+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
271 | + + ++ + | ++ + | + + + + +
+
+ * @return _status The status of the dispute+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ function disputeStatus(bytes32 _disputeId) external view returns (DisputeStatus _status);+ + |
+
274 | + + ++ + | ++ + | + + + + ++ + + + | +
275 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ * @notice The id of each request in chronological order+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
278 | + + ++ + | ++ + | + + + + +
+
+ * @param _nonce The nonce of the request+ + |
+
279 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The id of the request+ + |
+
280 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
281 | + + ++ + | ++ + | + + + + +
+
+ function nonceToRequestId(uint256 _nonce) external view returns (bytes32 _requestId);+ + |
+
282 | + + ++ + | ++ + | + + + + ++ + + + | +
283 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
284 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the finalized response ID for a given request+ + |
+
285 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
286 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
287 | + + ++ + | ++ + | + + + + +
+
+ * @return _finalizedResponseId The id of the finalized response+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
289 | + + ++ + | ++ + | + + + + +
+
+ function finalizedResponseId(bytes32 _requestId) external view returns (bytes32 _finalizedResponseId);+ + |
+
290 | + + ++ + | ++ + | + + + + ++ + + + | +
291 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
292 | + + ++ + | ++ + | + + + + +
+
+ * @notice The block's timestamp at which a request was created+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
294 | + + ++ + | ++ + | + + + + +
+
+ * @param _id The request id+ + |
+
295 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestCreatedAt The block's timestamp+ + |
+
296 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
297 | + + ++ + | ++ + | + + + + +
+
+ function requestCreatedAt(bytes32 _id) external view returns (uint256 _requestCreatedAt);+ + |
+
298 | + + ++ + | ++ + | + + + + ++ + + + | +
299 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
300 | + + ++ + | ++ + | + + + + +
+
+ * @notice The block's timestamp at which a response was created+ + |
+
301 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
302 | + + ++ + | ++ + | + + + + +
+
+ * @param _id The response id+ + |
+
303 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseCreatedAt The block's timestamp+ + |
+
304 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
305 | + + ++ + | ++ + | + + + + +
+
+ function responseCreatedAt(bytes32 _id) external view returns (uint256 _responseCreatedAt);+ + |
+
306 | + + ++ + | ++ + | + + + + ++ + + + | +
307 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
308 | + + ++ + | ++ + | + + + + +
+
+ * @notice The block's timestamp at which a dispute was created+ + |
+
309 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
310 | + + ++ + | ++ + | + + + + +
+
+ * @param _id The dispute id+ + |
+
311 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeCreatedAt The block's timestamp+ + |
+
312 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
313 | + + ++ + | ++ + | + + + + +
+
+ function disputeCreatedAt(bytes32 _id) external view returns (uint256 _disputeCreatedAt);+ + |
+
314 | + + ++ + | ++ + | + + + + ++ + + + | +
315 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
316 | + + ++ + | ++ + | + + + + +
+
+ * @notice The block's timestamp at which a request was finalized+ + |
+
317 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
318 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The request id+ + |
+
319 | + + ++ + | ++ + | + + + + +
+
+ * @return _finalizedAt The block's timestamp+ + |
+
320 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
321 | + + ++ + | ++ + | + + + + +
+
+ function finalizedAt(bytes32 _requestId) external view returns (uint256 _finalizedAt);+ + |
+
322 | + + ++ + | ++ + | + + + + ++ + + + | +
323 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
324 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
325 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
326 | + + ++ + | ++ + | + + + + ++ + + + | +
327 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
328 | + + ++ + | ++ + | + + + + +
+
+ * @notice Generates the request ID and initializes the modules for the request+ + |
+
329 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
330 | + + ++ + | ++ + | + + + + +
+
+ * @dev The modules must be real contracts following the IModule interface+ + |
+
331 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data+ + |
+
332 | + + ++ + | ++ + | + + + + +
+
+ * @param _ipfsHash The hashed IPFS CID of the metadata json+ + |
+
333 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The id of the request, can be used to propose a response or query results+ + |
+
334 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
335 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(Request memory _request, bytes32 _ipfsHash) external returns (bytes32 _requestId);+ + |
+
336 | + + ++ + | ++ + | + + + + ++ + + + | +
337 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
338 | + + ++ + | ++ + | + + + + +
+
+ * @notice Creates multiple requests, the same way as createRequest+ + |
+
339 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
340 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestsData The array of calldata for each request+ + |
+
341 | + + ++ + | ++ + | + + + + +
+
+ * @return _batchRequestsIds The array of request IDs+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ * @param _ipfsHashes The array of hashed IPFS CIDs of the metadata files+ + |
+
343 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
344 | + + ++ + | ++ + | + + + + +
+
+ function createRequests(+ + |
+
345 | + + ++ + | ++ + | + + + + +
+
+ Request[] calldata _requestsData,+ + |
+
346 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] calldata _ipfsHashes+ + |
+
347 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes32[] memory _batchRequestsIds);+ + |
+
348 | + + ++ + | ++ + | + + + + ++ + + + | +
349 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
350 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the list of request IDs+ + |
+
351 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ * @param _startFrom The index to start from+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ * @param _batchSize The number of requests to return+ + |
+
354 | + + ++ + | ++ + | + + + + +
+
+ * @return _list The list of request IDs+ + |
+
355 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
356 | + + ++ + | ++ + | + + + + +
+
+ function listRequestIds(uint256 _startFrom, uint256 _batchSize) external view returns (bytes32[] memory _list);+ + |
+
357 | + + ++ + | ++ + | + + + + ++ + + + | +
358 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
359 | + + ++ + | ++ + | + + + + +
+
+ * @notice Creates a new response for a given request+ + |
+
360 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
361 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to create a response for+ + |
+
362 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response data+ + |
+
363 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseId The id of the created response+ + |
+
364 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
365 | + + ++ + | ++ + | + + + + +
+
+ function proposeResponse(+ + |
+
366 | + + ++ + | ++ + | + + + + +
+
+ Request calldata _request,+ + |
+
367 | + + ++ + | ++ + | + + + + +
+
+ Response calldata _response+ + |
+
368 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes32 _responseId);+ + |
+
369 | + + ++ + | ++ + | + + + + ++ + + + | +
370 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
371 | + + ++ + | ++ + | + + + + +
+
+ * @notice Starts the process of disputing a response+ + |
+
372 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
373 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
374 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to dispute+ + |
+
375 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data+ + |
+
376 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id of the created dispute+ + |
+
377 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
378 | + + ++ + | ++ + | + + + + +
+
+ function disputeResponse(+ + |
+
379 | + + ++ + | ++ + | + + + + +
+
+ Request calldata _request,+ + |
+
380 | + + ++ + | ++ + | + + + + +
+
+ Response calldata _response,+ + |
+
381 | + + ++ + | ++ + | + + + + +
+
+ Dispute calldata _dispute+ + |
+
382 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes32 _disputeId);+ + |
+
383 | + + ++ + | ++ + | + + + + ++ + + + | +
384 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
385 | + + ++ + | ++ + | + + + + +
+
+ * @notice Escalates a dispute, sending it to the resolution module+ + |
+
386 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
387 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
388 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
389 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being escalated+ + |
+
390 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
391 | + + ++ + | ++ + | + + + + +
+
+ function escalateDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external;+ + |
+
392 | + + ++ + | ++ + | + + + + ++ + + + | +
393 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
394 | + + ++ + | ++ + | + + + + +
+
+ * @notice Resolves a dispute+ + |
+
395 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
396 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
397 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
398 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being resolved+ + |
+
399 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
400 | + + ++ + | ++ + | + + + + +
+
+ function resolveDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external;+ + |
+
401 | + + ++ + | ++ + | + + + + ++ + + + | +
402 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
403 | + + ++ + | ++ + | + + + + +
+
+ * @notice Updates the status of a dispute+ + |
+
404 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
405 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
406 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
407 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being updated+ + |
+
408 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The new status of the dispute+ + |
+
409 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
410 | + + ++ + | ++ + | + + + + +
+
+ function updateDisputeStatus(+ + |
+
411 | + + ++ + | ++ + | + + + + +
+
+ Request calldata _request,+ + |
+
412 | + + ++ + | ++ + | + + + + +
+
+ Response calldata _response,+ + |
+
413 | + + ++ + | ++ + | + + + + +
+
+ Dispute calldata _dispute,+ + |
+
414 | + + ++ + | ++ + | + + + + +
+
+ DisputeStatus _status+ + |
+
415 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
416 | + + ++ + | ++ + | + + + + ++ + + + | +
417 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
418 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks if the given address is a module used in the request+ + |
+
419 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
420 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
421 | + + ++ + | ++ + | + + + + +
+
+ * @param _module The address to check+ + |
+
422 | + + ++ + | ++ + | + + + + +
+
+ * @return _allowedModule If the module is a part of the request+ + |
+
423 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
424 | + + ++ + | ++ + | + + + + +
+
+ function allowedModule(bytes32 _requestId, address _module) external view returns (bool _allowedModule);+ + |
+
425 | + + ++ + | ++ + | + + + + ++ + + + | +
426 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
427 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks if the given address is participating in a specific request+ + |
+
428 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
429 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
430 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The address to check+ + |
+
431 | + + ++ + | ++ + | + + + + +
+
+ * @return _isParticipant If the user is a participant of the request+ + |
+
432 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
433 | + + ++ + | ++ + | + + + + +
+
+ function isParticipant(bytes32 _requestId, address _user) external view returns (bool _isParticipant);+ + |
+
434 | + + ++ + | ++ + | + + + + ++ + + + | +
435 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
436 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the ids of the responses for a given request+ + |
+
437 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
438 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
439 | + + ++ + | ++ + | + + + + +
+
+ * @return _ids The ids of the responses+ + |
+
440 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
441 | + + ++ + | ++ + | + + + + +
+
+ function getResponseIds(bytes32 _requestId) external view returns (bytes32[] memory _ids);+ + |
+
442 | + + ++ + | ++ + | + + + + ++ + + + | +
443 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
444 | + + ++ + | ++ + | + + + + +
+
+ * @notice Finalizes the request and executes the post-request logic on the modules+ + |
+
445 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
446 | + + ++ + | ++ + | + + + + +
+
+ * @dev In case of a request with no responses, an response with am empty `requestId` is expected+ + |
+
447 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request being finalized+ + |
+
448 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The final response+ + |
+
449 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
450 | + + ++ + | ++ + | + + + + +
+
+ function finalize(Request calldata _request, Response calldata _response) external;+ + |
+
451 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
452 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from './IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @title Validator+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @notice Contract to validate requests, responses, and disputes+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ interface IValidator {+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
14 | + + ++ + | ++ + | + + + + ++ + + + | +
15 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the response provided does not exist+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ error Validator_InvalidResponse();+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the dispute provided does not exist+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ error Validator_InvalidDispute();+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @notice The oracle contract+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ function ORACLE() external view returns (IOracle _oracle);+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule} from '../../IModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '../../IOracle.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ interface IDisputeModule is IModule {+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a response is disputed+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The id of the response disputed+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being created+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ event ResponseDisputed(+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, bytes32 indexed _responseId, bytes32 indexed _disputeId, IOracle.Dispute _dispute+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a dispute status is updated+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The new status of the dispute+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ event DisputeStatusChanged(bytes32 indexed _disputeId, IOracle.Dispute _dispute, IOracle.DisputeStatus _status);+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ FUNCTIONS+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * @notice Called by the oracle when a dispute has been made on a response+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @dev Bonds the tokens of the disputer+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ function disputeResponse(+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @notice Callback executed after a response to a dispute is received by the oracle+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ function onDisputeStatusChange(+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
62 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule} from '../../IModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ interface IFinalityModule is IModule {}+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule} from '../../IModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ interface IRequestModule is IModule {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @notice Called by the oracle when a request has been made+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The data of the request+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @param _requester The address of the requester+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(bytes32 _requestId, bytes calldata _data, address _requester) external;+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule} from '../../IModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '../../IOracle.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @title ResolutionModule+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @notice Common interface for all resolution modules+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ interface IResolutionModule is IModule {+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a dispute has been resolved+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id for the request that was disputed+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id for the dispute that was resolved+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The final result of the resolution+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ event DisputeResolved(bytes32 indexed _requestId, bytes32 indexed _disputeId, IOracle.DisputeStatus _status);+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a resolution is started+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id for the request for the dispute+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id for the dispute that the resolution was started for+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ event ResolutionStarted(bytes32 indexed _requestId, bytes32 indexed _disputeId);+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
30 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * @notice Starts the resolution process+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute being resolved+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ function startResolution(+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @notice Resolves a dispute+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute being resolved+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute being resolved+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ function resolveDispute(+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
64 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule} from '../../IModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '../../IOracle.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @title ResponseModule+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @notice Common interface for all response modules+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ interface IResponseModule is IModule {+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @notice Creates a new response for a given request+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to create a response for+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to create+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @param _sender The creator of the response+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ function propose(IOracle.Request calldata _request, IOracle.Response calldata _response, address _sender) external;+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @notice Refunds the proposer for a valid and unutilized response+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The unutilized response+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ function releaseUnutilizedResponse(IOracle.Request calldata _request, IOracle.Response calldata _response) external;+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 26 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '../interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ library ValidatorLib {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the response provided does not match the request+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ error ValidatorLib_InvalidResponseBody();+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the dispute provided does not match the request or response+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ error ValidatorLib_InvalidDisputeBody();+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @notice Computes the id a given request+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @return _id The id the request+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ function _getId(IOracle.Request calldata _request) public pure returns (bytes32 _id) {+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ _id = keccak256(abi.encode(_request));+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @notice Computes the id a given response+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * @return _id The id the response+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ function _getId(IOracle.Response calldata _response) public pure returns (bytes32 _id) {+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ _id = keccak256(abi.encode(_response));+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @notice Computes the id a given dispute+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @return _id The id the dispute+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ function _getId(IOracle.Dispute calldata _dispute) public pure returns (bytes32 _id) {+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ _id = keccak256(abi.encode(_dispute));+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness and existance of a request-response pair+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseId The id the response+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ function _validateResponse(+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ ) public pure returns (bytes32 _responseId) {+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _getId(_request);+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ _responseId = _getId(_response);+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + ++ + | ++ + | + + + + +
+
+ if (_response.requestId != _requestId) revert ValidatorLib_InvalidResponseBody();+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness of a request-dispute pair+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id the dispute+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ function _validateDispute(+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ ) public pure returns (bytes32 _disputeId) {+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _getId(_request);+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ _disputeId = _getId(_dispute);+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ if (_dispute.requestId != _requestId) revert ValidatorLib_InvalidDisputeBody();+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness of a response-dispute pair+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id the dispute+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ function _validateDispute(+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ ) public pure returns (bytes32 _disputeId) {+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _responseId = _getId(_response);+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ _disputeId = _getId(_dispute);+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ if (_dispute.responseId != _responseId) revert ValidatorLib_InvalidDisputeBody();+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
97 | + + ++ + | ++ + | + + + + ++ + + + | +
98 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ * @notice Validates the correctness of a request-response-dispute triplet+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to compute the id for+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response to compute the id for+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute to compute the id for+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseId The id the response+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeId The id the dispute+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ function _validateResponseAndDispute(+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ ) public pure returns (bytes32 _responseId, bytes32 _disputeId) {+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _getId(_request);+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ _responseId = _getId(_response);+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ _disputeId = _getId(_dispute);+ + |
+
115 | + + ++ + | ++ + | + + + + ++ + + + | +
116 | + + ++ + | ++ + | + + + + +
+
+ if (_response.requestId != _requestId) revert ValidatorLib_InvalidResponseBody();+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ if (_dispute.requestId != _requestId || _dispute.responseId != _responseId) {+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ revert ValidatorLib_InvalidDisputeBody();+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
122 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 169 (0.6%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ import {FixedPointMathLib} from 'solmate/src/utils/FixedPointMathLib.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ import {IBondEscalationModule} from '../../../interfaces/modules/dispute/IBondEscalationModule.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ contract BondEscalationModule is Module, IBondEscalationModule {+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => mapping(address _pledger => uint256 pledges)) public pledgesForDispute;+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => mapping(address _pledger => uint256 pledges)) public pledgesAgainstDispute;+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @notice Struct containing all the data for a given escalation.+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => BondEscalation) internal _escalations;+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ constructor(IOracle _oracle) Module(_oracle) {}+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ function moduleName() external pure returns (string memory _moduleName) {+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ return 'BondEscalationModule';+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ function disputeResponse(+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyOracle {+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _getId(_dispute);+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.disputeModuleData);+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ BondEscalation storage _escalation = _escalations[_dispute.requestId];+ + |
+
38 | + + ++ + | ++ + | + + + + ++ + + + | +
39 | + + ++ + | ++ + | + + + + +
+
+ if (block.timestamp > ORACLE.responseCreatedAt(_dispute.responseId) + _params.disputeWindow) {+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_DisputeWindowOver();+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.bond({+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _dispute.disputer,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseDisputed({+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ _responseId: _dispute.responseId,+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ _disputeId: _disputeId,+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ _dispute: _dispute+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
56 | + + ++ + | ++ + | + + + + ++ + + + | +
57 | + + ++ + | ++ + | + + + + +
+
+ // Only the first dispute of a request should go through the bond escalation+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ // Consecutive disputes should be handled by the resolution module+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ if (_escalation.status == BondEscalationStatus.None) {+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ _escalation.status = BondEscalationStatus.Active;+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ _escalation.disputeId = _disputeId;+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ emit BondEscalationStatusUpdated(_dispute.requestId, _disputeId, BondEscalationStatus.Active);+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ } else if (_disputeId != _escalation.disputeId) {+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ ORACLE.escalateDispute(_request, _response, _dispute);+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ function onDisputeStatusChange(+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata,+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyOracle {+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.disputeModuleData);+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ BondEscalation storage _escalation = _escalations[_dispute.requestId];+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _disputeStatus = ORACLE.disputeStatus(_disputeId);+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ BondEscalationStatus _newStatus;+ + |
+
79 | + + ++ + | ++ + | + + + + ++ + + + | +
80 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeId == _escalation.disputeId) {+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ // The bond escalated (first) dispute has been updated+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeStatus == IOracle.DisputeStatus.Escalated) {+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ // The dispute has been escalated to the Resolution module+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ // Make sure the bond escalation deadline has passed and update the status+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ if (block.timestamp <= ORACLE.disputeCreatedAt(_disputeId) + _params.bondEscalationDeadline) {+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_BondEscalationNotOver();+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ if (+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ _escalation.status != BondEscalationStatus.Active+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ || _escalation.amountOfPledgesForDispute != _escalation.amountOfPledgesAgainstDispute+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ ) {+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_NotEscalatable();+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ _newStatus = BondEscalationStatus.Escalated;+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ } else if (_disputeStatus == IOracle.DisputeStatus.NoResolution) {+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ // The resolution module failed to reach a resolution+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ // Refund the disputer and all pledgers, the bond escalation escalation status stays Escalated+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ _newStatus = BondEscalationStatus.Escalated;+ + |
+
101 | + + ++ + | ++ + | + + + + ++ + + + | +
102 | + + ++ + | ++ + | + + + + +
+
+ if (_escalation.amountOfPledgesForDispute + _escalation.amountOfPledgesAgainstDispute > 0) {+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.onSettleBondEscalation({+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ _request: _request,+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ _dispute: _dispute,+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ _amountPerPledger: _params.bondSize,+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ _winningPledgersLength: _escalation.amountOfPledgesForDispute + _escalation.amountOfPledgesAgainstDispute+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
111 | + + ++ + | ++ + | + + + + ++ + + + | +
112 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.release({+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _dispute.disputer,+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ // One of the sides won+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ // Pay the winner (proposer/disputer) and the pledgers, the bond escalation status changes to DisputerWon/DisputerLost+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ bool _won = _disputeStatus == IOracle.DisputeStatus.Won;+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ _newStatus = _won ? BondEscalationStatus.DisputerWon : BondEscalationStatus.DisputerLost;+ + |
+
123 | + + ++ + | ++ + | + + + + ++ + + + | +
124 | + + ++ + | ++ + | + + + + +
+
+ uint256 _pledgesForDispute = _escalation.amountOfPledgesForDispute;+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ uint256 _pledgesAgainstDispute = _escalation.amountOfPledgesAgainstDispute;+ + |
+
126 | + + ++ + | ++ + | + + + + ++ + + + | +
127 | + + ++ + | ++ + | + + + + +
+
+ if (_pledgesAgainstDispute > 0 || _pledgesForDispute > 0) {+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountToPay = _won+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ ? _params.bondSize+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ + FixedPointMathLib.mulDivDown(_pledgesAgainstDispute, _params.bondSize, _pledgesForDispute)+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ : _params.bondSize+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ + FixedPointMathLib.mulDivDown(_pledgesForDispute, _params.bondSize, _pledgesAgainstDispute);+ + |
+
133 | + + ++ + | ++ + | + + + + ++ + + + | +
134 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.onSettleBondEscalation({+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ _request: _request,+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ _dispute: _dispute,+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ _amountPerPledger: _amountToPay,+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ _winningPledgersLength: _won ? _pledgesForDispute : _pledgesAgainstDispute+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
142 | + + ++ + | ++ + | + + + + ++ + + + | +
143 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.pay({+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ _payer: _won ? _dispute.proposer : _dispute.disputer,+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ _receiver: _won ? _dispute.disputer : _dispute.proposer,+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
150 | + + ++ + | ++ + | + + + + ++ + + + | +
151 | + + ++ + | ++ + | + + + + +
+
+ if (_won) {+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.release({+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _dispute.disputer,+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ // The non-bond escalated (second and subsequent) dispute has been updated+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeStatus == IOracle.DisputeStatus.Escalated) {+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ // The dispute has been escalated to the Resolution module+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ // Update the bond escalation status to Escalated+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ _newStatus = BondEscalationStatus.Escalated;+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ } else if (_disputeStatus == IOracle.DisputeStatus.NoResolution) {+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ // The resolution module failed to reach a resolution+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ // Refund the disputer, the bond escalation status stays Escalated+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ _newStatus = BondEscalationStatus.Escalated;+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.release({+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _dispute.disputer,+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ // One of the sides won+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ // Pay the winner (proposer/disputer), the bond escalation status changes to DisputerWon/DisputerLost+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ bool _won = _disputeStatus == IOracle.DisputeStatus.Won;+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ _newStatus = _won ? BondEscalationStatus.DisputerWon : BondEscalationStatus.DisputerLost;+ + |
+
181 | + + ++ + | ++ + | + + + + ++ + + + | +
182 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.pay({+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ _payer: _won ? _dispute.proposer : _dispute.disputer,+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ _receiver: _won ? _dispute.disputer : _dispute.proposer,+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
189 | + + ++ + | ++ + | + + + + ++ + + + | +
190 | + + ++ + | ++ + | + + + + +
+
+ if (_won) {+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.release({+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _dispute.requestId,+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _dispute.disputer,+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
200 | + + ++ + | ++ + | + + + + ++ + + + | +
201 | + + ++ + | ++ + | + + + + +
+
+ _escalation.status = _newStatus;+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ emit BondEscalationStatusUpdated(_dispute.requestId, _disputeId, _newStatus);+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeStatusChanged({_disputeId: _disputeId, _dispute: _dispute, _status: _disputeStatus});+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
205 | + + ++ + | ++ + | + + + + ++ + + + | +
206 | + + ++ + | ++ + | + + + + +
+
+ ////////////////////////////////////////////////////////////////////+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ // Bond Escalation Exclusive Functions+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ ////////////////////////////////////////////////////////////////////+ + |
+
209 | + + ++ + | ++ + | + + + + ++ + + + | +
210 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ function pledgeForDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external {+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _getId(_dispute);+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = _pledgeChecks(_request, _dispute, true);+ + |
+
214 | + + ++ + | ++ + | + + + + ++ + + + | +
215 | + + ++ + | ++ + | + + + + +
+
+ _escalations[_dispute.requestId].amountOfPledgesForDispute += 1;+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ pledgesForDispute[_dispute.requestId][msg.sender] += 1;+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.pledge({+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ _pledger: msg.sender,+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ _request: _request,+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ _dispute: _dispute,+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
224 | + + ++ + | ++ + | + + + + ++ + + + | +
225 | + + ++ + | ++ + | + + + + +
+
+ emit PledgedForDispute(_disputeId, msg.sender, _params.bondSize);+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
227 | + + ++ + | ++ + | + + + + ++ + + + | +
228 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ function pledgeAgainstDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external {+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _getId(_dispute);+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = _pledgeChecks(_request, _dispute, false);+ + |
+
232 | + + ++ + | ++ + | + + + + ++ + + + | +
233 | + + ++ + | ++ + | + + + + +
+
+ _escalations[_dispute.requestId].amountOfPledgesAgainstDispute += 1;+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ pledgesAgainstDispute[_dispute.requestId][msg.sender] += 1;+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.pledge({+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ _pledger: msg.sender,+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ _request: _request,+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ _dispute: _dispute,+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
242 | + + ++ + | ++ + | + + + + ++ + + + | +
243 | + + ++ + | ++ + | + + + + +
+
+ emit PledgedAgainstDispute(_disputeId, msg.sender, _params.bondSize);+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
245 | + + ++ + | ++ + | + + + + ++ + + + | +
246 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
247 | + + ++ + | ++ + | + + + + +
+
+ function settleBondEscalation(+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ (, bytes32 _disputeId) = _validateResponseAndDispute(_request, _response, _dispute);+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.disputeModuleData);+ + |
+
254 | + + ++ + | ++ + | + + + + +
+
+ BondEscalation storage _escalation = _escalations[_dispute.requestId];+ + |
+
255 | + + ++ + | ++ + | + + + + ++ + + + | +
256 | + + ++ + | ++ + | + + + + +
+
+ uint256 _disputeCreatedAt = ORACLE.disputeCreatedAt(_disputeId);+ + |
+
257 | + + ++ + | ++ + | + + + + +
+
+ if (block.timestamp <= _disputeCreatedAt + _params.bondEscalationDeadline + _params.tyingBuffer) {+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_BondEscalationNotOver();+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
260 | + + ++ + | ++ + | + + + + ++ + + + | +
261 | + + ++ + | ++ + | + + + + +
+
+ if (_escalation.status != BondEscalationStatus.Active) {+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_BondEscalationCantBeSettled();+ + |
+
263 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
264 | + + ++ + | ++ + | + + + + ++ + + + | +
265 | + + ++ + | ++ + | + + + + +
+
+ uint256 _pledgesForDispute = _escalation.amountOfPledgesForDispute;+ + |
+
266 | + + ++ + | ++ + | + + + + +
+
+ uint256 _pledgesAgainstDispute = _escalation.amountOfPledgesAgainstDispute;+ + |
+
267 | + + ++ + | ++ + | + + + + ++ + + + | +
268 | + + ++ + | ++ + | + + + + +
+
+ if (_pledgesForDispute == _pledgesAgainstDispute) {+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_ShouldBeEscalated();+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
271 | + + ++ + | ++ + | + + + + ++ + + + | +
272 | + + ++ + | ++ + | + + + + +
+
+ bool _disputersWon = _pledgesForDispute > _pledgesAgainstDispute;+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ _escalation.status = _disputersWon ? BondEscalationStatus.DisputerWon : BondEscalationStatus.DisputerLost;+ + |
+
274 | + + ++ + | ++ + | + + + + ++ + + + | +
275 | + + ++ + | ++ + | + + + + +
+
+ emit BondEscalationStatusUpdated(_dispute.requestId, _disputeId, _escalation.status);+ + |
+
276 | + + ++ + | ++ + | + + + + ++ + + + | +
277 | + + ++ + | ++ + | + + + + +
+
+ ORACLE.updateDisputeStatus(+ + |
+
278 | + + ++ + | ++ + | + + + + +
+
+ _request, _response, _dispute, _disputersWon ? IOracle.DisputeStatus.Won : IOracle.DisputeStatus.Lost+ + |
+
279 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
280 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
281 | + + ++ + | ++ + | + + + + ++ + + + | +
282 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
283 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks the necessary conditions for pledging+ + |
+
284 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data+ + |
+
285 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data+ + |
+
286 | + + ++ + | ++ + | + + + + +
+
+ * @param _forDispute Whether the pledge is for or against the dispute+ + |
+
287 | + + ++ + | ++ + | + + + + +
+
+ * @return _params The decoded parameters for the request+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
289 | + + ++ + | ++ + | + + + + +
+
+ function _pledgeChecks(+ + |
+
290 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
291 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
292 | + + ++ + | ++ + | + + + + +
+
+ bool _forDispute+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (RequestParameters memory _params) {+ + |
+
294 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _validateDispute(_request, _dispute);+ + |
+
295 | + + ++ + | ++ + | + + + + ++ + + + | +
296 | + + ++ + | ++ + | + + + + +
+
+ BondEscalation memory _escalation = _escalations[_dispute.requestId];+ + |
+
297 | + + ++ + | ++ + | + + + + ++ + + + | +
298 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeId != _escalation.disputeId) {+ + |
+
299 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_InvalidDispute();+ + |
+
300 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
301 | + + ++ + | ++ + | + + + + ++ + + + | +
302 | + + ++ + | ++ + | + + + + +
+
+ _params = decodeRequestData(_request.disputeModuleData);+ + |
+
303 | + + ++ + | ++ + | + + + + ++ + + + | +
304 | + + ++ + | ++ + | + + + + +
+
+ uint256 _disputeCreatedAt = ORACLE.disputeCreatedAt(_disputeId);+ + |
+
305 | + + ++ + | ++ + | + + + + +
+
+ if (block.timestamp > _disputeCreatedAt + _params.bondEscalationDeadline + _params.tyingBuffer) {+ + |
+
306 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_BondEscalationOver();+ + |
+
307 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
308 | + + ++ + | ++ + | + + + + ++ + + + | +
309 | + + ++ + | ++ + | + + + + +
+
+ uint256 _numPledgersForDispute = _escalation.amountOfPledgesForDispute;+ + |
+
310 | + + ++ + | ++ + | + + + + +
+
+ uint256 _numPledgersAgainstDispute = _escalation.amountOfPledgesAgainstDispute;+ + |
+
311 | + + ++ + | ++ + | + + + + ++ + + + | +
312 | + + ++ + | ++ + | + + + + +
+
+ if (_forDispute) {+ + |
+
313 | + + ++ + | ++ + | + + + + +
+
+ if (_numPledgersForDispute == _params.maxNumberOfEscalations) {+ + |
+
314 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_MaxNumberOfEscalationsReached();+ + |
+
315 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
316 | + + ++ + | ++ + | + + + + +
+
+ if (_numPledgersForDispute > _numPledgersAgainstDispute) revert BondEscalationModule_CanOnlySurpassByOnePledge();+ + |
+
317 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
318 | + + ++ + | ++ + | + + + + +
+
+ if (_numPledgersAgainstDispute == _params.maxNumberOfEscalations) {+ + |
+
319 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_MaxNumberOfEscalationsReached();+ + |
+
320 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
321 | + + ++ + | ++ + | + + + + +
+
+ if (_numPledgersAgainstDispute > _numPledgersForDispute) revert BondEscalationModule_CanOnlySurpassByOnePledge();+ + |
+
322 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
323 | + + ++ + | ++ + | + + + + ++ + + + | +
324 | + + ++ + | ++ + | + + + + +
+
+ if (+ + |
+
325 | + + ++ + | ++ + | + + + + +
+
+ block.timestamp > _disputeCreatedAt + _params.bondEscalationDeadline+ + |
+
326 | + + ++ + | ++ + | + + + + +
+
+ && _numPledgersForDispute == _numPledgersAgainstDispute+ + |
+
327 | + + ++ + | ++ + | + + + + +
+
+ ) {+ + |
+
328 | + + ++ + | ++ + | + + + + +
+
+ revert BondEscalationModule_CannotBreakTieDuringTyingBuffer();+ + |
+
329 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
330 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
331 | + + ++ + | ++ + | + + + + ++ + + + | +
332 | + + ++ + | ++ + | + + + + +
+
+ ////////////////////////////////////////////////////////////////////+ + |
+
333 | + + ++ + | ++ + | + + + + +
+
+ // View Functions+ + |
+
334 | + + ++ + | ++ + | + + + + +
+
+ ////////////////////////////////////////////////////////////////////+ + |
+
335 | + + ++ + | ++ + | + + + + ++ + + + | +
336 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
337 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {+ + |
+
338 | + + ++ + | ++ + | + + + + +
+
+ _params = abi.decode(_data, (RequestParameters));+ + |
+
339 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
340 | + + ++ + | ++ + | + + + + ++ + + + | +
341 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondEscalationModule+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ function getEscalation(bytes32 _requestId) public view returns (BondEscalation memory _escalation) {+ + |
+
343 | + + ++ + | ++ + | + + + + +
+
+ _escalation = _escalations[_requestId];+ + |
+
344 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
345 | + + ++ + | ++ + | + + + + ++ + + + | +
346 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
347 | + + ++ + | ++ + | + + + + +
+
+ function validateParameters(bytes calldata _encodedParameters)+ + |
+
348 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
349 | + + ++ + | ++ + | + + + + +
+
+ pure+ + |
+
350 | + + ++ + | ++ + | + + + + +
+
+ override(Module, IModule)+ + |
+
351 | + + ++ + | ++ + | + + + + +
+
+ returns (bool _valid)+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ {+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_encodedParameters);+ + |
+
354 | + + ++ + | ++ + | + + + + +
+
+ _valid = address(_params.accountingExtension) != address(0) && address(_params.bondToken) != address(0)+ + |
+
355 | + + ++ + | ++ + | + + + + +
+
+ && _params.bondSize != 0 && _params.bondEscalationDeadline != 0 && _params.maxNumberOfEscalations != 0+ + |
+
356 | + + ++ + | ++ + | + + + + +
+
+ && _params.tyingBuffer != 0 && _params.disputeWindow != 0;+ + |
+
357 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
358 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
359 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 20 (5.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrator} from '../../../interfaces/IArbitrator.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitratorModule} from '../../../interfaces/modules/resolution/IArbitratorModule.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ contract ArbitratorModule is Module, IArbitratorModule {+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @notice The status of all disputes+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => ArbitrationStatus _status) internal _disputeData;+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ constructor(IOracle _oracle) Module(_oracle) {}+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
18 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ function moduleName() external pure returns (string memory _moduleName) {+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ return 'ArbitratorModule';+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitratorModule+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ _params = abi.decode(_data, (RequestParameters));+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitratorModule+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ function getStatus(bytes32 _disputeId) external view returns (ArbitrationStatus _disputeStatus) {+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ _disputeStatus = _disputeData[_disputeId];+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
32 | + + ++ + | ++ + | + + + + ++ + + + | +
33 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitratorModule+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ function startResolution(+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyOracle {+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.resolutionModuleData);+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ if (_params.arbitrator == address(0)) revert ArbitratorModule_InvalidArbitrator();+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ _disputeData[_disputeId] = ArbitrationStatus.Active;+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ IArbitrator(_params.arbitrator).resolve(_request, _response, _dispute);+ + |
+
45 | + + ++ + | ++ + | + + + + ++ + + + | +
46 | + + ++ + | ++ + | + + + + +
+
+ emit ResolutionStarted(_dispute.requestId, _disputeId);+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitratorModule+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ function resolveDispute(+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyOracle {+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ if (ORACLE.disputeStatus(_disputeId) != IOracle.DisputeStatus.Escalated) revert ArbitratorModule_InvalidDisputeId();+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.resolutionModuleData);+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _status = IArbitrator(_params.arbitrator).getAnswer(_disputeId);+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + ++ + | ++ + | + + + + +
+
+ if (_status <= IOracle.DisputeStatus.Escalated) revert ArbitratorModule_InvalidResolutionStatus();+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ _disputeData[_disputeId] = ArbitrationStatus.Resolved;+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ ORACLE.updateDisputeStatus(_request, _response, _dispute, _status);+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeResolved(_dispute.requestId, _disputeId, _status);+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ function validateParameters(bytes calldata _encodedParameters)+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ pure+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ override(Module, IModule)+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ returns (bool _valid)+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ {+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_encodedParameters);+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ _valid = _params.arbitrator != address(0);+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 60 (1.7%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IBondedResponseModule} from '../../../interfaces/modules/response/IBondedResponseModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ contract BondedResponseModule is Module, IBondedResponseModule {+ + |
+
10 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ constructor(IOracle _oracle) Module(_oracle) {}+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ function moduleName() public pure returns (string memory _moduleName) {+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ _moduleName = 'BondedResponseModule';+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondedResponseModule+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ _params = abi.decode(_data, (RequestParameters));+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondedResponseModule+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ function propose(+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ address _sender+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyOracle {+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.responseModuleData);+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
30 | + + ++ + | ++ + | + + + + +
+
+ // Cannot propose after the deadline+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestCreatedAt = ORACLE.requestCreatedAt(_response.requestId);+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ if (block.timestamp >= _requestCreatedAt + _params.deadline) revert BondedResponseModule_TooLateToPropose();+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ // Cannot propose to a request with a response, unless the response is being disputed+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] memory _responseIds = ORACLE.getResponseIds(_response.requestId);+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ uint256 _responsesLength = _responseIds.length;+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ if (_responsesLength != 0) {+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = ORACLE.disputeOf(_responseIds[_responsesLength - 1]);+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ // Allowing one undisputed response at a time+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeId == bytes32(0)) revert BondedResponseModule_AlreadyResponded();+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _status = ORACLE.disputeStatus(_disputeId);+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ // If the dispute was lost, we assume the proposed answer was correct.+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ // DisputeStatus.None should not be reachable due to the previous check.+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ if (_status == IOracle.DisputeStatus.Lost) revert BondedResponseModule_AlreadyResponded();+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + ++ + | ++ + | + + + + +
+
+ if (_sender != _response.proposer) {+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.bond({+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _response.proposer,+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _response.requestId,+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize,+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ _sender: _sender+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.bond({+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _response.proposer,+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _response.requestId,+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseProposed(_response.requestId, _response);+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondedResponseModule+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ function finalizeRequest(+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ address _finalizer+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ ) external override(IBondedResponseModule, Module) onlyOracle {+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.responseModuleData);+ + |
+
76 | + + ++ + | ++ + | + + + + ++ + + + | +
77 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _getId(_request);+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ bool _isModule = ORACLE.allowedModule(_requestId, _finalizer);+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ if (!_isModule && block.timestamp < ORACLE.requestCreatedAt(_requestId) + _params.deadline) {+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ revert BondedResponseModule_TooEarlyToFinalize();+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ uint256 _responseCreatedAt = ORACLE.responseCreatedAt(_getId(_response));+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ if (_responseCreatedAt != 0) {+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ if (!_isModule && block.timestamp < _responseCreatedAt + _params.disputeWindow) {+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ revert BondedResponseModule_TooEarlyToFinalize();+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.release({+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _response.proposer,+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _requestId,+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
98 | + + ++ + | ++ + | + + + + ++ + + + | +
99 | + + ++ + | ++ + | + + + + +
+
+ emit RequestFinalized(_requestId, _response, _finalizer);+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
101 | + + ++ + | ++ + | + + + + ++ + + + | +
102 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IBondedResponseModule+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ function releaseUnutilizedResponse(IOracle.Request calldata _request, IOracle.Response calldata _response) external {+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _responseId = _validateResponse(_request, _response);+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = ORACLE.disputeOf(_responseId);+ + |
+
106 | + + ++ + | ++ + | + + + + ++ + + + | +
107 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeId > 0) {+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _disputeStatus = ORACLE.disputeStatus(_disputeId);+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ if (_disputeStatus != IOracle.DisputeStatus.Lost && _disputeStatus != IOracle.DisputeStatus.NoResolution) {+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ revert BondedResponseModule_InvalidReleaseParameters();+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _finalizedResponseId = ORACLE.finalizedResponseId(_response.requestId);+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ if (_finalizedResponseId == _responseId || _finalizedResponseId == bytes32(0)) {+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ revert BondedResponseModule_InvalidReleaseParameters();+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_request.responseModuleData);+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ _params.accountingExtension.release({+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ _bonder: _response.proposer,+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _response.requestId,+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ _token: _params.bondToken,+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ _amount: _params.bondSize+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
126 | + + ++ + | ++ + | + + + + ++ + + + | +
127 | + + ++ + | ++ + | + + + + +
+
+ emit UnutilizedResponseReleased(_response.requestId, _responseId);+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
129 | + + ++ + | ++ + | + + + + ++ + + + | +
130 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ function validateParameters(bytes calldata _encodedParameters)+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ pure+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ override(Module, IModule)+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ returns (bool _valid)+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ {+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_encodedParameters);+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ _valid = address(_params.accountingExtension) != address(0) && address(_params.bondToken) != address(0)+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ && _params.bondSize != 0 && _params.disputeWindow != 0 && _params.deadline != 0;+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
142 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ interface IArbitrator {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the status of a dispute+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The ID of the dispute+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * @return _status The status of the dispute+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ function getAnswer(bytes32 _dispute) external returns (IOracle.DisputeStatus _status);+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @notice Resolves a dispute+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request object+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response object+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute object+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @return _data The data for the dispute resolution+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ function resolve(+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory _request,+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory _response,+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory _dispute+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ ) external returns (bytes memory _data);+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IValidator} from '@defi-wonderland/prophet-core/solidity/interfaces/IValidator.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ /*+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @title AccountingExtension+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @notice Extension allowing users to deposit and bond funds+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * to be used for payments and disputes.+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ interface IAccountingExtension is IValidator {+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @notice A user deposited tokens into the accounting extension+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @param _depositor The user who deposited the tokens+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token deposited by the user+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` deposited+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ event Deposited(address indexed _depositor, IERC20 indexed _token, uint256 _amount);+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @notice A user withdrew tokens from the accounting extension+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * @param _withdrawer The user who withdrew the tokens+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token withdrawn by the user+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` withdrawn+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ event Withdrew(address indexed _withdrawer, IERC20 indexed _token, uint256 _amount);+ + |
+
32 | + + ++ + | ++ + | + + + + ++ + + + | +
33 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * @notice A payment between users has been made+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * @param _beneficiary The user receiving the tokens+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @param _payer The user who is getting its tokens transferred+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being transferred+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` transferred+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ event Paid(+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, address indexed _beneficiary, address indexed _payer, IERC20 _token, uint256 _amount+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * @notice User's funds have been bonded+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The user who is getting its tokens bonded+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being bonded+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` bonded+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ event Bonded(bytes32 indexed _requestId, address indexed _bonder, IERC20 indexed _token, uint256 _amount);+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * @notice User's funds have been released+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * @param _beneficiary The user who is getting its tokens released+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being released+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` released+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ event Released(bytes32 indexed _requestId, address indexed _beneficiary, IERC20 indexed _token, uint256 _amount);+ + |
+
62 | + + ++ + | ++ + | + + + + ++ + + + | +
63 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
66 | + + ++ + | ++ + | + + + + ++ + + + | +
67 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when depositing tokens with a fee on transfer+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ error AccountingExtension_FeeOnTransferToken();+ + |
+
71 | + + ++ + | ++ + | + + + + ++ + + + | +
72 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the account doesn't have enough balance to bond/withdraw+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * or not enough bonded to release/pay+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ error AccountingExtension_InsufficientFunds();+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the module bonding user tokens hasn't been approved by the user.+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ error AccountingExtension_NotAllowed();+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when an `onlyAllowedModule` function is called by something+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * else than a module being used in the corresponding request+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ error AccountingExtension_UnauthorizedModule();+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when an `onlyParticipant` function is called with an address+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ * that is not part of the request.+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ error AccountingExtension_UnauthorizedUser();+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
98 | + + ++ + | ++ + | + + + + ++ + + + | +
99 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the amount of a token a user has bonded+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The address of the user with bonded tokens+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * @param _bondToken The token bonded+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request the user bonded for+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * @return _amount The amount of `_bondToken` bonded+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ function bondedAmountOf(address _user, IERC20 _bondToken, bytes32 _requestId) external returns (uint256 _amount);+ + |
+
107 | + + ++ + | ++ + | + + + + ++ + + + | +
108 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the amount of a token a user has deposited+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The address of the user with deposited tokens+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The token deposited+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ * @return _amount The amount of `_token` deposited+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ function balanceOf(address _user, IERC20 _token) external view returns (uint256 _amount);+ + |
+
115 | + + ++ + | ++ + | + + + + ++ + + + | +
116 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
119 | + + ++ + | ++ + | + + + + ++ + + + | +
120 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ * @notice Transfers tokens from a user and updates his virtual balance+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * @dev The user must have approved the accounting extension to transfer the tokens.+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ * The transfer must not take a fee (deflationary tokens can lead to unexpected behavior).+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being deposited+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` to deposit+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ function deposit(IERC20 _token, uint256 _amount) external;+ + |
+
128 | + + ++ + | ++ + | + + + + ++ + + + | +
129 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows an user to withdraw deposited tokens+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being withdrawn+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` to withdraw+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ function withdraw(IERC20 _token, uint256 _amount) external;+ + |
+
135 | + + ++ + | ++ + | + + + + ++ + + + | +
136 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a allowed module to transfer bonded tokens from one user to another+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ * @dev Only the virtual balances in the accounting extension are modified. The token contract+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ * is not called nor its balances modified.+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request handling the user's tokens+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ * @param _payer The address of the user paying the tokens+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ * @param _receiver The address of the user receiving the tokens+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being transferred+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` being transferred+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ function pay(bytes32 _requestId, address _payer, address _receiver, IERC20 _token, uint256 _amount) external;+ + |
+
147 | + + ++ + | ++ + | + + + + ++ + + + | +
148 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a allowed module to bond a user's tokens for a request+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user to bond tokens for+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request the user is bonding for+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being bonded+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` to bond+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;+ + |
+
156 | + + ++ + | ++ + | + + + + ++ + + + | +
157 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a valid module to bond a user's tokens for a request+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user to bond tokens for+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request the user is bonding for+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being bonded+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` to bond+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ * @param _sender The address starting the propose call on the Oracle+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount, address _sender) external;+ + |
+
166 | + + ++ + | ++ + | + + + + ++ + + + | +
167 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a valid module to release a user's tokens+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user to release tokens for+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request where the tokens were bonded+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being released+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` to release+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ function release(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;+ + |
+
175 | + + ++ + | ++ + | + + + + ++ + + + | +
176 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a user to approve a module for bonding tokens+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ * @param _module The address of the module to be approved+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ function approveModule(address _module) external;+ + |
+
181 | + + ++ + | ++ + | + + + + ++ + + + | +
182 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a user to revoke a module's approval for bonding tokens+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ * @param _module The address of the module to be revoked+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ function revokeModule(address _module) external;+ + |
+
187 | + + ++ + | ++ + | + + + + ++ + + + | +
188 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns a list of all modules a user has approved+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The address of the user+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ * @return _approvedModules The array of all modules approved by the user+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ function approvedModules(address _user) external view returns (address[] memory _approvedModules);+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
195 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IBondEscalationModule} from '../modules/dispute/IBondEscalationModule.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IAccountingExtension} from './IAccountingExtension.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @title BondEscalationAccounting+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @notice Extension allowing users to deposit and pledge funds to be used for bond escalation+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ interface IBondEscalationAccounting is IAccountingExtension {+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
18 | + + ++ + | ++ + | + + + + ++ + + + | +
19 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @notice A user pledged tokens for one of the sides of a dispute+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The user who pledged the tokens+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being pledged+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` pledged by the user+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ event Pledged(+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ address indexed _pledger, bytes32 indexed _requestId, bytes32 indexed _disputeId, IERC20 _token, uint256 _amount+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @notice The pledgers of the winning side of a dispute have been paid+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @param _winningPledgers The users who got paid for pledging for the winning side+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being paid out+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _amountPerPledger The amount of `_token` paid to each of the winning pledgers+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ event WinningPledgersPaid(+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId,+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _disputeId,+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ address[] indexed _winningPledgers,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _token,+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @notice A bond escalation has been settled+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being paid out+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * @param _amountPerPledger The amount of `_token` to be paid for each winning pledgers+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @param _winningPledgersLength The number of winning pledgers+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ event BondEscalationSettled(+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId, bytes32 _disputeId, IERC20 _token, uint256 _amountPerPledger, uint256 _winningPledgersLength+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
61 | + + ++ + | ++ + | + + + + ++ + + + | +
62 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * @notice A pledge has been released back to the user+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The user who is getting their tokens released+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being released+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` released+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ event PledgeReleased(+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, bytes32 indexed _disputeId, address indexed _pledger, IERC20 _token, uint256 _amount+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
74 | + + ++ + | ++ + | + + + + ++ + + + | +
75 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ * @notice A user claimed their reward for pledging for the winning side of a dispute+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The user who claimed their reward+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being paid out+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of `_token` paid to the pledger+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ event EscalationRewardClaimed(+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, bytes32 indexed _disputeId, address indexed _pledger, IERC20 _token, uint256 _amount+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
87 | + + ++ + | ++ + | + + + + ++ + + + | +
88 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
91 | + + ++ + | ++ + | + + + + ++ + + + | +
92 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user tries to claim their pledge for an escalation that was already claimed+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationAccounting_AlreadyClaimed();+ + |
+
96 | + + ++ + | ++ + | + + + + ++ + + + | +
97 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user tries to claim their pledge for an escalation that wasn't finished yet+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationAccounting_NoEscalationResult();+ + |
+
101 | + + ++ + | ++ + | + + + + ++ + + + | +
102 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user doesn't have enough funds to pledge+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationAccounting_InsufficientFunds();+ + |
+
106 | + + ++ + | ++ + | + + + + ++ + + + | +
107 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to settle an already settled escalation+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationAccounting_AlreadySettled();+ + |
+
111 | + + ++ + | ++ + | + + + + ++ + + + | +
112 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when caller is not authorized+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationAccounting_UnauthorizedCaller();+ + |
+
116 | + + ++ + | ++ + | + + + + ++ + + + | +
117 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
120 | + + ++ + | ++ + | + + + + ++ + + + | +
121 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * @notice Contains the data of the result of an escalation. Is used by users to claim their pledges+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ * @param requestId The ID of the bond-escalated request+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ * @param token The address of the token being paid out+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ * @param amountPerPledger The amount of token paid to each of the winning pledgers+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ * @param bondEscalationModule The address of the bond escalation module that was used+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ struct EscalationResult {+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ bytes32 requestId;+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ IERC20 token;+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ uint256 amountPerPledger;+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule bondEscalationModule;+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
134 | + + ++ + | ++ + | + + + + ++ + + + | +
135 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
138 | + + ++ + | ++ + | + + + + ++ + + + | +
139 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ * @notice The amount pledged by the given pledger in the given dispute of the given request+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ * @param _token Address of the token being pledged+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ * @return _amountPledged The amount of pledged tokens+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ function pledges(bytes32 _disputeId, IERC20 _token) external returns (uint256 _amountPledged);+ + |
+
147 | + + ++ + | ++ + | + + + + ++ + + + | +
148 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ * @notice The result of the given dispute+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The ID of the bond-escalated request+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ * @return _token Address of the token being paid as a reward for winning the bond escalation+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ * @return _amountPerPledger Amount of `_token` to be rewarded to each of the winning pledgers+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ * @return _bondEscalationModule The address of the bond escalation module that was used+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ function escalationResults(bytes32 _disputeId)+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ returns (bytes32 _requestId, IERC20 _token, uint256 _amountPerPledger, IBondEscalationModule _bondEscalationModule);+ + |
+
160 | + + ++ + | ++ + | + + + + ++ + + + | +
161 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ * @notice True if the given pledger has claimed their reward for the given dispute+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger Address of the pledger+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ * @return _claimed True if the pledger has claimed their reward+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ function pledgerClaimed(bytes32 _requestId, address _pledger) external returns (bool _claimed);+ + |
+
169 | + + ++ + | ++ + | + + + + ++ + + + | +
170 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks whether an address is an authorized caller.+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ * @param _caller The address to check+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ * @return _authorized True if the address is authorized, false otherwise+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ function authorizedCallers(address _caller) external returns (bool _authorized);+ + |
+
177 | + + ++ + | ++ + | + + + + ++ + + + | +
178 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
181 | + + ++ + | ++ + | + + + + ++ + + + | +
182 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ * @notice Pledges the given amount of token to the provided dispute id of the provided request id+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ * @dev This function must be called by an allowed module+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger Address of the pledger+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The bond-escalated request+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The bond-escalated dispute+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ * @param _token Address of the token being paid as a reward for winning the bond escalation+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount Amount of token to pledge+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ function pledge(+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ address _pledger,+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _token,+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
200 | + + ++ + | ++ + | + + + + ++ + + + | +
201 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ * @notice Updates the accounting of the given dispute to reflect the result of the bond escalation+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ * @dev This function must be called by an allowed module+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The bond-escalated request+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The bond-escalated dispute+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ * @param _token Address of the token being paid as a reward for winning the bond escalation+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ * @param _amountPerPledger Amount of `_token` to be rewarded to each of the winning pledgers+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ * @param _winningPledgersLength Amount of pledges that won the dispute+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ function onSettleBondEscalation(+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _token,+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger,+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ uint256 _winningPledgersLength+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
218 | + + ++ + | ++ + | + + + + ++ + + + | +
219 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ * @notice Releases a given amount of funds to the pledger+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ * @dev This function must be called by an allowed module+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The bond-escalated request+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The bond-escalated dispute+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger Address of the pledger+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ * @param _token Address of the token to be released+ + |
+
228 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount Amount of `_token` to be released to the pledger+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ function releasePledge(+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ address _pledger,+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _token,+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
237 | + + ++ + | ++ + | + + + + ++ + + + | +
238 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ * @notice Claims the reward for the pledger the given dispute+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger Address of the pledger to claim the rewards+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ function claimEscalationReward(bytes32 _disputeId, address _pledger) external;+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
245 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IDisputeModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/dispute/IDisputeModule.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ import {IBondEscalationAccounting} from '../../extensions/IBondEscalationAccounting.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @title BondEscalationModule+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing users to have the first dispute of a request go through the bond escalation mechanism.+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ interface IBondEscalationModule is IDisputeModule {+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
18 | + + ++ + | ++ + | + + + + ++ + + + | +
19 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @notice A pledge has been made in favor of a dispute.+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute the pledger is pledging in favor of.+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The address of the pledger.+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount pledged.+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ event PledgedForDispute(bytes32 indexed _disputeId, address indexed _pledger, uint256 indexed _amount);+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @notice A pledge has been made against a dispute.+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute the pledger is pledging against.+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The address of the pledger.+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount pledged.+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ event PledgedAgainstDispute(bytes32 indexed _disputeId, address indexed _pledger, uint256 indexed _amount);+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @notice The status of the bond escalation mechanism has been updated.+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request associated with the bond escalation mechanism.+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute going through the bond escalation mechanism.+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The new status.+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ event BondEscalationStatusUpdated(+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, bytes32 indexed _disputeId, BondEscalationStatus _status+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
51 | + + ++ + | ++ + | + + + + ++ + + + | +
52 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to escalate a dispute going through the bond escalation module before its deadline.+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_BondEscalationNotOver();+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to pledge for a dispute that is not going through the bond escalation mechanism.+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_InvalidDispute();+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the number of escalation pledges of a given dispute has reached its maximum.+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_MaxNumberOfEscalationsReached();+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to settle a dispute that went through the bond escalation when it's not active.+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_BondEscalationCantBeSettled();+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to settle a bond escalation process that is not tied.+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_ShouldBeEscalated();+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to break a tie after the tying buffer has started.+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_CannotBreakTieDuringTyingBuffer();+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the max number of escalations or the bond size is set to 0.+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_ZeroValue();+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to pledge after the bond escalation deadline.+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_BondEscalationOver();+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to escalate a dispute going through the bond escalation process that is not tied+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * or that is not active.+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_NotEscalatable();+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to pledge for a dispute that does not exist+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_DisputeDoesNotExist();+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to surpass the number of pledges of the other side by more than 1 in the bond escalation mechanism.+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_CanOnlySurpassByOnePledge();+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to dispute a response after the dispute period expired.+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_DisputeWindowOver();+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to set up a request with invalid bond size or maximum amount of escalations.+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ error BondEscalationModule_InvalidEscalationParameters();+ + |
+
105 | + + ++ + | ++ + | + + + + ++ + + + | +
106 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ ENUMS+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
109 | + + ++ + | ++ + | + + + + ++ + + + | +
110 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ * @notice Enum holding all the possible statuses of a dispute going through the bond escalation mechanism.+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ * @param None Dispute is not going through the bond escalation mechanism.+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * @param Active Dispute is going through the bond escalation mechanism.+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * @param Escalated Dispute is going through the bond escalation mechanism and has been escalated.+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @param DisputerLost An escalated dispute has been settled and the disputer lost.+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ * @param DisputerWon An escalated dispute has been settled and the disputer won.+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ enum BondEscalationStatus {+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ None,+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ Active,+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ Escalated,+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ DisputerLost,+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ DisputerWon+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
125 | + + ++ + | ++ + | + + + + ++ + + + | +
126 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
129 | + + ++ + | ++ + | + + + + ++ + + + | +
130 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ * @notice Parameters of the request as stored in the module+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ * @param accountingExtension Address of the accounting extension associated with the given request+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ * @param bondToken Address of the token associated with the given request+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ * @param bondSize Amount to bond to dispute or propose an answer for the given request+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ * @param maxNumberOfEscalations Maximum allowed escalations or pledges for each side during the bond escalation process+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ * @param bondEscalationDeadline Number of seconds after dispute creation required to+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ * finish the bond escalation process when pledges are not tied.+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ * @param tyingBuffer Number of seconds to extend the bond escalation process to allow the losing+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ * party to tie if at the end of the initial deadline the pledges weren't tied.+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ * @param disputeWindow Number of seconds disputers have to challenge the proposed response since its creation.+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ struct RequestParameters {+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationAccounting accountingExtension;+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ IERC20 bondToken;+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ uint256 bondSize;+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ uint256 maxNumberOfEscalations;+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ uint256 bondEscalationDeadline;+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ uint256 tyingBuffer;+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ uint256 disputeWindow;+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
152 | + + ++ + | ++ + | + + + + ++ + + + | +
153 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ * @notice Data of a dispute going through the bond escalation.+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ * @param disputeId The id of the dispute being bond-escalated.+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ * @param status The status of the bond escalation.+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ * @param amountOfPledgesForDispute The amount of pledges made in favor of the dispute.+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ * @param amountOfPledgesAgainstDispute The amount of pledges made against the dispute.+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ struct BondEscalation {+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId;+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ BondEscalationStatus status;+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ uint256 amountOfPledgesForDispute;+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ uint256 amountOfPledgesAgainstDispute;+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
167 | + + ++ + | ++ + | + + + + ++ + + + | +
168 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
171 | + + ++ + | ++ + | + + + + ++ + + + | +
172 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the escalation data for a request.+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request to get its escalation data.+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ * @return _escalation The struct containing the escalation data.+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ function getEscalation(bytes32 _requestId) external view returns (BondEscalation memory _escalation);+ + |
+
178 | + + ++ + | ++ + | + + + + ++ + + + | +
179 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the decoded data for a request+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The encoded request parameters+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ * @return _params The struct containing the parameters for the request+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) external view returns (RequestParameters memory _params);+ + |
+
185 | + + ++ + | ++ + | + + + + ++ + + + | +
186 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the amount of pledges that a particular pledger has made for a given dispute.+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request to get the pledges for.+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The address of the pledger to get the pledges for.+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ * @return _numPledges The number of pledges made by the pledger for the dispute.+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ function pledgesForDispute(bytes32 _requestId, address _pledger) external view returns (uint256 _numPledges);+ + |
+
193 | + + ++ + | ++ + | + + + + ++ + + + | +
194 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the amount of pledges that a particular pledger has made against a given dispute.+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request to get the pledges for.+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The address of the pledger to get the pledges for.+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ * @return _numPledges The number of pledges made by the pledger against the dispute.+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ function pledgesAgainstDispute(bytes32 _requestId, address _pledger) external view returns (uint256 _numPledges);+ + |
+
201 | + + ++ + | ++ + | + + + + ++ + + + | +
202 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
205 | + + ++ + | ++ + | + + + + ++ + + + | +
206 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ * @notice Disputes a response+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ * @dev If this is the first dispute of the request and the bond escalation window is not over,+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ * it will start the bond escalation process. This function must be called through the Oracle.+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data.+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response being disputed.+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute created by the oracle.+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ function disputeResponse(+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
221 | + + ++ + | ++ + | + + + + ++ + + + | +
222 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ * @notice Updates the status of a given disputeId and pays the proposer and disputer accordingly. If this+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ * dispute has gone through the bond escalation mechanism, then it will pay the winning pledgers as well.+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute to update the status for.+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data.+ + |
+
228 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response.+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data.+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ function onDisputeStatusChange(+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
237 | + + ++ + | ++ + | + + + + ++ + + + | +
238 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ * @notice Bonds funds in favor of a given dispute during the bond escalation process.+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data.+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data.+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ * @dev If the bond escalation is not tied at the end of its deadline, a tying buffer is added+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ * to avoid scenarios where one of the parties breaks the tie very last second.+ + |
+
246 | + + ++ + | ++ + | + + + + +
+
+ * During the tying buffer, the losing party can only tie, and once the escalation is tied+ + |
+
247 | + + ++ + | ++ + | + + + + +
+
+ * no further funds can be pledged.+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ function pledgeForDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external;+ + |
+
250 | + + ++ + | ++ + | + + + + ++ + + + | +
251 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ * @notice Pledges funds against a given disputeId during its bond escalation process.+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
254 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data.+ + |
+
255 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data.+ + |
+
256 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
257 | + + ++ + | ++ + | + + + + +
+
+ * @dev Will revert if the disputeId is not going through the bond escalation process.+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ * @dev If the bond escalation is not tied at the end of its deadline, a tying buffer is added+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ * to avoid scenarios where one of the parties breaks the tie very last second.+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ * During the tying buffer, the losing party can only tie, and once the escalation is tied+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ * no further funds can be pledged.+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
263 | + + ++ + | ++ + | + + + + +
+
+ function pledgeAgainstDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external;+ + |
+
264 | + + ++ + | ++ + | + + + + ++ + + + | +
265 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
266 | + + ++ + | ++ + | + + + + +
+
+ * @notice Settles the bond escalation process of a given requestId.+ + |
+
267 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data.+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response data.+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data.+ + |
+
271 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ * @dev Can only be called if after the deadline + tyingBuffer window is over, the pledges weren't tied+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
274 | + + ++ + | ++ + | + + + + +
+
+ function settleBondEscalation(+ + |
+
275 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
278 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
279 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
280 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IResolutionModule} from+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-core/solidity/interfaces/modules/resolution/IResolutionModule.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ /*+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @title ArbitratorModule+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing an external arbitrator contract to resolve a dispute.+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ interface IArbitratorModule is IResolutionModule {+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to resolve a dispute that is not escalated+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ error ArbitratorModule_InvalidDisputeId();+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the arbitrator address is the address zero+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ error ArbitratorModule_InvalidArbitrator();+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the arbitrator returns an invalid resolution status+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ error ArbitratorModule_InvalidResolutionStatus();+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ ENUMS+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @notice Available status of the arbitration process+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param Unknown The arbitration process has not started (default)+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param Active The arbitration process is active+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param Resolved The The arbitration process is finished+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ enum ArbitrationStatus {+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ Unknown,+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ Active,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ Resolved+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * @notice Parameters of the request as stored in the module+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @param arbitrator The address of the arbitrator+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ struct RequestParameters {+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ address arbitrator;+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
62 | + + ++ + | ++ + | + + + + ++ + + + | +
63 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the decoded data for a request+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The encoded request parameters+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @return _params The struct containing the parameters for the request+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) external view returns (RequestParameters memory _params);+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the current arbitration status of a dispute+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeStatus The `ArbitrationStatus` of the dispute+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ function getStatus(bytes32 _disputeId) external view returns (ArbitrationStatus _disputeStatus);+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * @notice Starts the arbitration process by calling `resolve` on the arbitrator and flags the dispute as Active+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * @dev Only callable by the Oracle+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * @dev Will revert if the arbitrator address is the address zero+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute being sent to the resolution+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ function startResolution(+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @notice Resolves the dispute by getting the answer from the arbitrator and updating the dispute status+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ * @dev Only callable by the Oracle+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The disputed response+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute that is being resolved+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ function resolveDispute(+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
112 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IResponseModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/response/IResponseModule.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ import {IAccountingExtension} from '../../extensions/IAccountingExtension.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ /*+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @title BondedResponseModule+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing users to propose a response for a request by bonding tokens+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ interface IBondedResponseModule is IResponseModule {+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a response is proposed+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request that the response was proposed+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The proposed response+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ event ResponseProposed(bytes32 indexed _requestId, IOracle.Response _response);+ + |
+
25 | + + ++ + | ++ + | + + + + ++ + + + | +
26 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when an uncalled response is released+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request that the response was proposed to+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseId The ID of the response that was released+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ event UnutilizedResponseReleased(bytes32 indexed _requestId, bytes32 indexed _responseId);+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to finalize a request before the deadline+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ error BondedResponseModule_TooEarlyToFinalize();+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to propose a response after deadline+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ error BondedResponseModule_TooLateToPropose();+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to propose a response while an undisputed response is already proposed+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ error BondedResponseModule_AlreadyResponded();+ + |
+
52 | + + ++ + | ++ + | + + + + ++ + + + | +
53 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to release an uncalled response with an invalid request, response or dispute+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ error BondedResponseModule_InvalidReleaseParameters();+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
61 | + + ++ + | ++ + | + + + + ++ + + + | +
62 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * @notice Parameters of the request as stored in the module+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @param accountingExtension The accounting extension used to bond and release tokens+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @param bondToken The token used for bonds in the request+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @param bondSize The amount of `_bondToken` to bond to propose a response and dispute+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * @param deadline The timestamp after which no responses can be proposed+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @param disputeWindow The time buffer required to finalize a request+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ struct RequestParameters {+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ IAccountingExtension accountingExtension;+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ IERC20 bondToken;+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ uint256 bondSize;+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ uint256 deadline;+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ uint256 disputeWindow;+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the decoded data for a request+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The encoded data+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @return _params The struct containing the parameters for the request+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) external pure returns (RequestParameters memory _params);+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ * @notice Proposes a response for a request, bonding the proposer's tokens+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ * @dev The user must have previously deposited tokens into the accounting extension+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request to propose a response to+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response being proposed+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @param _sender The address that initiated the transaction+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ function propose(IOracle.Request calldata _request, IOracle.Response calldata _response, address _sender) external;+ + |
+
100 | + + ++ + | ++ + | + + + + ++ + + + | +
101 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * @notice Finalizes the request by releasing the bond of the proposer+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request that is being finalized+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The final response+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalizer The user who triggered the finalization+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ function finalizeRequest(+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ address _finalizer+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @notice Releases the proposer funds if the response is valid and it has not been used to finalize the request+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The finalized request+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The unutilized response+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ function releaseUnutilizedResponse(IOracle.Request calldata _request, IOracle.Response calldata _response) external;+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
122 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +2 / 53 (3.8%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import "./IERC20.sol";+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ import "./extensions/IERC20Metadata.sol";+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import "../../utils/Context.sol";+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @dev Implementation of the {IERC20} interface.+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * This implementation is agnostic to the way tokens are created. This means+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * that a supply mechanism has to be added in a derived contract using {_mint}.+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * For a generic mechanism see {ERC20PresetMinterPauser}.+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * TIP: For a detailed writeup see our guide+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * to implement supply mechanisms].+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * The default value of {decimals} is 18. To change this, you should override+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * this function so it returns a different value.+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * We have followed general OpenZeppelin Contracts guidelines: functions revert+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * instead returning `false` on failure. This behavior is nonetheless+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * conventional and does not conflict with the expectations of ERC20+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * applications.+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * Additionally, an {Approval} event is emitted on calls to {transferFrom}.+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * This allows applications to reconstruct the allowance for all accounts just+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * by listening to said events. Other implementations of the EIP may not emit+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * these events, as it isn't required by the specification.+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * functions have been added to mitigate the well-known issues around setting+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * allowances. See {IERC20-approve}.+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ contract ERC20 is Context, IERC20, IERC20Metadata {+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ mapping(address => uint256) private _balances;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ mapping(address => mapping(address => uint256)) private _allowances;+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ uint256 private _totalSupply;+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ string private _name;+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ string private _symbol;+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @dev Sets the values for {name} and {symbol}.+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ * All two of these values are immutable: they can only be set once during+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * construction.+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ constructor(string memory name_, string memory symbol_) {+ + |
+
55 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _name = name_;+ + |
+
56 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _symbol = symbol_;+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the name of the token.+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ function name() public view virtual override returns (string memory) {+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ return _name;+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the symbol of the token, usually a shorter version of the+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * name.+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ function symbol() public view virtual override returns (string memory) {+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ return _symbol;+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the number of decimals used to get its user representation.+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ * For example, if `decimals` equals `2`, a balance of `505` tokens should+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ * be displayed to a user as `5.05` (`505 / 10 ** 2`).+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * Tokens usually opt for a value of 18, imitating the relationship between+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * Ether and Wei. This is the default value returned by this function, unless+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * it's overridden.+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * NOTE: This information is only used for _display_ purposes: it in+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * no way affects any of the arithmetic of the contract, including+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * {IERC20-balanceOf} and {IERC20-transfer}.+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ function decimals() public view virtual override returns (uint8) {+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ return 18;+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ * @dev See {IERC20-totalSupply}.+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ function totalSupply() public view virtual override returns (uint256) {+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ return _totalSupply;+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
97 | + + ++ + | ++ + | + + + + ++ + + + | +
98 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ * @dev See {IERC20-balanceOf}.+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ function balanceOf(address account) public view virtual override returns (uint256) {+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ return _balances[account];+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ * @dev See {IERC20-transfer}.+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ * - `to` cannot be the zero address.+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ * - the caller must have a balance of at least `amount`.+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ function transfer(address to, uint256 amount) public virtual override returns (bool) {+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ address owner = _msgSender();+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ _transfer(owner, to, amount);+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ return true;+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ * @dev See {IERC20-allowance}.+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ function allowance(address owner, address spender) public view virtual override returns (uint256) {+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ return _allowances[owner][spender];+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
125 | + + ++ + | ++ + | + + + + ++ + + + | +
126 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ * @dev See {IERC20-approve}.+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ * `transferFrom`. This is semantically equivalent to an infinite approval.+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ * - `spender` cannot be the zero address.+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ function approve(address spender, uint256 amount) public virtual override returns (bool) {+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ address owner = _msgSender();+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ _approve(owner, spender, amount);+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ return true;+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
141 | + + ++ + | ++ + | + + + + ++ + + + | +
142 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ * @dev See {IERC20-transferFrom}.+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ * Emits an {Approval} event indicating the updated allowance. This is not+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ * required by the EIP. See the note at the beginning of {ERC20}.+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ * NOTE: Does not update the allowance if the current allowance+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ * is the maximum `uint256`.+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ * - `from` and `to` cannot be the zero address.+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ * - `from` must have a balance of at least `amount`.+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ * - the caller must have allowance for ``from``'s tokens of at least+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ * `amount`.+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ address spender = _msgSender();+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ _spendAllowance(from, spender, amount);+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ _transfer(from, to, amount);+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ return true;+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
164 | + + ++ + | ++ + | + + + + ++ + + + | +
165 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ * @dev Atomically increases the allowance granted to `spender` by the caller.+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ * This is an alternative to {approve} that can be used as a mitigation for+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ * problems described in {IERC20-approve}.+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ * Emits an {Approval} event indicating the updated allowance.+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ * - `spender` cannot be the zero address.+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ address owner = _msgSender();+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ _approve(owner, spender, allowance(owner, spender) + addedValue);+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ return true;+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
182 | + + ++ + | ++ + | + + + + ++ + + + | +
183 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ * @dev Atomically decreases the allowance granted to `spender` by the caller.+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ * This is an alternative to {approve} that can be used as a mitigation for+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ * problems described in {IERC20-approve}.+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ * Emits an {Approval} event indicating the updated allowance.+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ * - `spender` cannot be the zero address.+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ * - `spender` must have allowance for the caller of at least+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ * `subtractedValue`.+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ address owner = _msgSender();+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ uint256 currentAllowance = allowance(owner, spender);+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ _approve(owner, spender, currentAllowance - subtractedValue);+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
204 | + + ++ + | ++ + | + + + + ++ + + + | +
205 | + + ++ + | ++ + | + + + + +
+
+ return true;+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
207 | + + ++ + | ++ + | + + + + ++ + + + | +
208 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ * @dev Moves `amount` of tokens from `from` to `to`.+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ * This internal function is equivalent to {transfer}, and can be used to+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ * e.g. implement automatic token fees, slashing mechanisms, etc.+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {Transfer} event.+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ * - `from` cannot be the zero address.+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ * - `to` cannot be the zero address.+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ * - `from` must have a balance of at least `amount`.+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ function _transfer(address from, address to, uint256 amount) internal virtual {+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ require(from != address(0), "ERC20: transfer from the zero address");+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ require(to != address(0), "ERC20: transfer to the zero address");+ + |
+
225 | + + ++ + | ++ + | + + + + ++ + + + | +
226 | + + ++ + | ++ + | + + + + +
+
+ _beforeTokenTransfer(from, to, amount);+ + |
+
227 | + + ++ + | ++ + | + + + + ++ + + + | +
228 | + + ++ + | ++ + | + + + + +
+
+ uint256 fromBalance = _balances[from];+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ _balances[from] = fromBalance - amount;+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ // decrementing then incrementing.+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ _balances[to] += amount;+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
236 | + + ++ + | ++ + | + + + + ++ + + + | +
237 | + + ++ + | ++ + | + + + + +
+
+ emit Transfer(from, to, amount);+ + |
+
238 | + + ++ + | ++ + | + + + + ++ + + + | +
239 | + + ++ + | ++ + | + + + + +
+
+ _afterTokenTransfer(from, to, amount);+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
241 | + + ++ + | ++ + | + + + + ++ + + + | +
242 | + + ++ + | ++ + | + + + + +
+
+ /** @dev Creates `amount` tokens and assigns them to `account`, increasing+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ * the total supply.+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {Transfer} event with `from` set to the zero address.+ + |
+
246 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
247 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ * - `account` cannot be the zero address.+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ function _mint(address account, uint256 amount) internal virtual {+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ require(account != address(0), "ERC20: mint to the zero address");+ + |
+
253 | + + ++ + | ++ + | + + + + ++ + + + | +
254 | + + ++ + | ++ + | + + + + +
+
+ _beforeTokenTransfer(address(0), account, amount);+ + |
+
255 | + + ++ + | ++ + | + + + + ++ + + + | +
256 | + + ++ + | ++ + | + + + + +
+
+ _totalSupply += amount;+ + |
+
257 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ _balances[account] += amount;+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ emit Transfer(address(0), account, amount);+ + |
+
262 | + + ++ + | ++ + | + + + + ++ + + + | +
263 | + + ++ + | ++ + | + + + + +
+
+ _afterTokenTransfer(address(0), account, amount);+ + |
+
264 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
265 | + + ++ + | ++ + | + + + + ++ + + + | +
266 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
267 | + + ++ + | ++ + | + + + + +
+
+ * @dev Destroys `amount` tokens from `account`, reducing the+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ * total supply.+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {Transfer} event with `to` set to the zero address.+ + |
+
271 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
274 | + + ++ + | ++ + | + + + + +
+
+ * - `account` cannot be the zero address.+ + |
+
275 | + + ++ + | ++ + | + + + + +
+
+ * - `account` must have at least `amount` tokens.+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ function _burn(address account, uint256 amount) internal virtual {+ + |
+
278 | + + ++ + | ++ + | + + + + +
+
+ require(account != address(0), "ERC20: burn from the zero address");+ + |
+
279 | + + ++ + | ++ + | + + + + ++ + + + | +
280 | + + ++ + | ++ + | + + + + +
+
+ _beforeTokenTransfer(account, address(0), amount);+ + |
+
281 | + + ++ + | ++ + | + + + + ++ + + + | +
282 | + + ++ + | ++ + | + + + + +
+
+ uint256 accountBalance = _balances[account];+ + |
+
283 | + + ++ + | ++ + | + + + + +
+
+ require(accountBalance >= amount, "ERC20: burn amount exceeds balance");+ + |
+
284 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
285 | + + ++ + | ++ + | + + + + +
+
+ _balances[account] = accountBalance - amount;+ + |
+
286 | + + ++ + | ++ + | + + + + +
+
+ // Overflow not possible: amount <= accountBalance <= totalSupply.+ + |
+
287 | + + ++ + | ++ + | + + + + +
+
+ _totalSupply -= amount;+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
289 | + + ++ + | ++ + | + + + + ++ + + + | +
290 | + + ++ + | ++ + | + + + + +
+
+ emit Transfer(account, address(0), amount);+ + |
+
291 | + + ++ + | ++ + | + + + + ++ + + + | +
292 | + + ++ + | ++ + | + + + + +
+
+ _afterTokenTransfer(account, address(0), amount);+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
294 | + + ++ + | ++ + | + + + + ++ + + + | +
295 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
296 | + + ++ + | ++ + | + + + + +
+
+ * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.+ + |
+
297 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
298 | + + ++ + | ++ + | + + + + +
+
+ * This internal function is equivalent to `approve`, and can be used to+ + |
+
299 | + + ++ + | ++ + | + + + + +
+
+ * e.g. set automatic allowances for certain subsystems, etc.+ + |
+
300 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
301 | + + ++ + | ++ + | + + + + +
+
+ * Emits an {Approval} event.+ + |
+
302 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
303 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
304 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
305 | + + ++ + | ++ + | + + + + +
+
+ * - `owner` cannot be the zero address.+ + |
+
306 | + + ++ + | ++ + | + + + + +
+
+ * - `spender` cannot be the zero address.+ + |
+
307 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
308 | + + ++ + | ++ + | + + + + +
+
+ function _approve(address owner, address spender, uint256 amount) internal virtual {+ + |
+
309 | + + ++ + | ++ + | + + + + +
+
+ require(owner != address(0), "ERC20: approve from the zero address");+ + |
+
310 | + + ++ + | ++ + | + + + + +
+
+ require(spender != address(0), "ERC20: approve to the zero address");+ + |
+
311 | + + ++ + | ++ + | + + + + ++ + + + | +
312 | + + ++ + | ++ + | + + + + +
+
+ _allowances[owner][spender] = amount;+ + |
+
313 | + + ++ + | ++ + | + + + + +
+
+ emit Approval(owner, spender, amount);+ + |
+
314 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
315 | + + ++ + | ++ + | + + + + ++ + + + | +
316 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
317 | + + ++ + | ++ + | + + + + +
+
+ * @dev Updates `owner` s allowance for `spender` based on spent `amount`.+ + |
+
318 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
319 | + + ++ + | ++ + | + + + + +
+
+ * Does not update the allowance amount in case of infinite allowance.+ + |
+
320 | + + ++ + | ++ + | + + + + +
+
+ * Revert if not enough allowance is available.+ + |
+
321 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
322 | + + ++ + | ++ + | + + + + +
+
+ * Might emit an {Approval} event.+ + |
+
323 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
324 | + + ++ + | ++ + | + + + + +
+
+ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {+ + |
+
325 | + + ++ + | ++ + | + + + + +
+
+ uint256 currentAllowance = allowance(owner, spender);+ + |
+
326 | + + ++ + | ++ + | + + + + +
+
+ if (currentAllowance != type(uint256).max) {+ + |
+
327 | + + ++ + | ++ + | + + + + +
+
+ require(currentAllowance >= amount, "ERC20: insufficient allowance");+ + |
+
328 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
329 | + + ++ + | ++ + | + + + + +
+
+ _approve(owner, spender, currentAllowance - amount);+ + |
+
330 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
331 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
332 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
333 | + + ++ + | ++ + | + + + + ++ + + + | +
334 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
335 | + + ++ + | ++ + | + + + + +
+
+ * @dev Hook that is called before any transfer of tokens. This includes+ + |
+
336 | + + ++ + | ++ + | + + + + +
+
+ * minting and burning.+ + |
+
337 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
338 | + + ++ + | ++ + | + + + + +
+
+ * Calling conditions:+ + |
+
339 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
340 | + + ++ + | ++ + | + + + + +
+
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens+ + |
+
341 | + + ++ + | ++ + | + + + + +
+
+ * will be transferred to `to`.+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ * - when `from` is zero, `amount` tokens will be minted for `to`.+ + |
+
343 | + + ++ + | ++ + | + + + + +
+
+ * - when `to` is zero, `amount` of ``from``'s tokens will be burned.+ + |
+
344 | + + ++ + | ++ + | + + + + +
+
+ * - `from` and `to` are never both zero.+ + |
+
345 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
346 | + + ++ + | ++ + | + + + + +
+
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].+ + |
+
347 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
348 | + + ++ + | ++ + | + + + + +
+
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}+ + |
+
349 | + + ++ + | ++ + | + + + + ++ + + + | +
350 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
351 | + + ++ + | ++ + | + + + + +
+
+ * @dev Hook that is called after any transfer of tokens. This includes+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ * minting and burning.+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
354 | + + ++ + | ++ + | + + + + +
+
+ * Calling conditions:+ + |
+
355 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
356 | + + ++ + | ++ + | + + + + +
+
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens+ + |
+
357 | + + ++ + | ++ + | + + + + +
+
+ * has been transferred to `to`.+ + |
+
358 | + + ++ + | ++ + | + + + + +
+
+ * - when `from` is zero, `amount` tokens have been minted for `to`.+ + |
+
359 | + + ++ + | ++ + | + + + + +
+
+ * - when `to` is zero, `amount` of ``from``'s tokens have been burned.+ + |
+
360 | + + ++ + | ++ + | + + + + +
+
+ * - `from` and `to` are never both zero.+ + |
+
361 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
362 | + + ++ + | ++ + | + + + + +
+
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].+ + |
+
363 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
364 | + + ++ + | ++ + | + + + + +
+
+ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}+ + |
+
365 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
366 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @dev Interface of the ERC20 standard as defined in the EIP.+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ interface IERC20 {+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @dev Emitted when `value` tokens are moved from one account (`from`) to+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * another (`to`).+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * Note that `value` may be zero.+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ event Transfer(address indexed from, address indexed to, uint256 value);+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
18 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @dev Emitted when the allowance of a `spender` for an `owner` is set by+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * a call to {approve}. `value` is the new allowance.+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ event Approval(address indexed owner, address indexed spender, uint256 value);+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the amount of tokens in existence.+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ function totalSupply() external view returns (uint256);+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the amount of tokens owned by `account`.+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ function balanceOf(address account) external view returns (uint256);+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * @dev Moves `amount` tokens from the caller's account to `to`.+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * Returns a boolean value indicating whether the operation succeeded.+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {Transfer} event.+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ function transfer(address to, uint256 amount) external returns (bool);+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the remaining number of tokens that `spender` will be+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ * allowed to spend on behalf of `owner` through {transferFrom}. This is+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * zero by default.+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * This value changes when {approve} or {transferFrom} are called.+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ function allowance(address owner, address spender) external view returns (uint256);+ + |
+
51 | + + ++ + | ++ + | + + + + ++ + + + | +
52 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * Returns a boolean value indicating whether the operation succeeded.+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * IMPORTANT: Beware that changing an allowance with this method brings the risk+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ * that someone may use both the old and the new allowance by unfortunate+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * transaction ordering. One possible solution to mitigate this race+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ * condition is to first reduce the spender's allowance to 0 and set the+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * desired value afterwards:+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ * Emits an {Approval} event.+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ function approve(address spender, uint256 amount) external returns (bool);+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @dev Moves `amount` tokens from `from` to `to` using the+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ * allowance mechanism. `amount` is then deducted from the caller's+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ * allowance.+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ * Returns a boolean value indicating whether the operation succeeded.+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {Transfer} event.+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ function transferFrom(address from, address to, uint256 amount) external returns (bool);+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
79 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import "../IERC20.sol";+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @dev Interface for the optional metadata functions from the ERC20 standard.+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v4.1._+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ interface IERC20Metadata is IERC20 {+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the name of the token.+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ function name() external view returns (string memory);+ + |
+
18 | + + ++ + | ++ + | + + + + ++ + + + | +
19 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the symbol of the token.+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ function symbol() external view returns (string memory);+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the decimals places of the token.+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ function decimals() external view returns (uint8);+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * need to send a transaction, and thus is not required to hold Ether at all.+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * ==== Security Considerations+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * considered as an intention to spend the allowance in any specific way. The second is that because permits have+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * generally recommended is:+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * ```solidity+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * doThing(..., value);+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * }+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * function doThing(..., uint256 value) public {+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * token.safeTransferFrom(msg.sender, address(this), value);+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * ...+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * }+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * ```+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * {SafeERC20-safeTransferFrom}).+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * contracts should have entry points that don't rely on permit.+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ interface IERC20Permit {+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ * given ``owner``'s signed approval.+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * IMPORTANT: The same issues {IERC20-approve} has related to transaction+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * ordering also apply here.+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * Emits an {Approval} event.+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * - `spender` cannot be the zero address.+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * - `deadline` must be a timestamp in the future.+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * over the EIP712-formatted function arguments.+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ * - the signature must use ``owner``'s current nonce (see {nonces}).+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ * For more information on the signature format, see the+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * section].+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ * CAUTION: See Security Considerations above.+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ function permit(+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ address owner,+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ address spender,+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ uint256 value,+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ uint256 deadline,+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ uint8 v,+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ bytes32 r,+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ bytes32 s+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the current nonce for `owner`. This value must be+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ * included whenever a signature is generated for {permit}.+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * Every successful call to {permit} increases ``owner``'s nonce by one. This+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * prevents a signature from being used multiple times.+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ function nonces(address owner) external view returns (uint256);+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ // solhint-disable-next-line func-name-mixedcase+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ function DOMAIN_SEPARATOR() external view returns (bytes32);+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
91 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 4 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import "../IERC20.sol";+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ import "../extensions/IERC20Permit.sol";+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import "../../../utils/Address.sol";+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @title SafeERC20+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @dev Wrappers around ERC20 operations that throw on failure (when the token+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * contract returns false). Tokens that return no value (and instead revert or+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * throw on failure) are also supported, non-reverting calls are assumed to be+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * successful.+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ library SafeERC20 {+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ using Address for address;+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * non-reverting calls are assumed to be successful.+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ function safeTransfer(IERC20 token, address to, uint256 value) internal {+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
30 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @dev Deprecated. This function has issues similar to the ones found in+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * {IERC20-approve}, and its usage is discouraged.+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ * Whenever possible, use {safeIncreaseAllowance} and+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ * {safeDecreaseAllowance} instead.+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ function safeApprove(IERC20 token, address spender, uint256 value) internal {+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ // safeApprove should only be called when setting an initial allowance,+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ // or when resetting it to zero. To increase and decrease it, use+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ require(+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ (value == 0) || (token.allowance(address(this), spender) == 0),+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ "SafeERC20: approve from non-zero to non-zero allowance"+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
55 | + + ++ + | ++ + | + + + + ++ + + + | +
56 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ * non-reverting calls are assumed to be successful.+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ uint256 oldAllowance = token.allowance(address(this), spender);+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
64 | + + ++ + | ++ + | + + + + ++ + + + | +
65 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * non-reverting calls are assumed to be successful.+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ uint256 oldAllowance = token.allowance(address(this), spender);+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
76 | + + ++ + | ++ + | + + + + ++ + + + | +
77 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * to be set to zero before setting it to a non-zero value, such as USDT.+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ function forceApprove(IERC20 token, address spender, uint256 value) internal {+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ if (!_callOptionalReturnBool(token, approvalCall)) {+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ _callOptionalReturn(token, approvalCall);+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ * Revert on invalid signature.+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ function safePermit(+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ IERC20Permit token,+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ address owner,+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ address spender,+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ uint256 value,+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ uint256 deadline,+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ uint8 v,+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ bytes32 r,+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ bytes32 s+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ ) internal {+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ uint256 nonceBefore = token.nonces(owner);+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ token.permit(owner, spender, value, deadline, v, r, s);+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ uint256 nonceAfter = token.nonces(owner);+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed");+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
110 | + + ++ + | ++ + | + + + + ++ + + + | +
111 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * on the return value: the return value is optional (but if data is returned, it must not be false).+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * @param token The token targeted by the call.+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @param data The call data (encoded using abi.encode or one of its variants).+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ function _callOptionalReturn(IERC20 token, bytes memory data) private {+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ // the target address contains contract code and also asserts for success in the low-level call.+ + |
+
121 | + + ++ + | ++ + | + + + + ++ + + + | +
122 | + + ++ + | ++ + | + + + + +
+
+ bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ require(returndata.length == 0 || abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
125 | + + ++ + | ++ + | + + + + ++ + + + | +
126 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ * on the return value: the return value is optional (but if data is returned, it must not be false).+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ * @param token The token targeted by the call.+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ * @param data The call data (encoded using abi.encode or one of its variants).+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ // and not revert is the subcall reverts.+ + |
+
138 | + + ++ + | ++ + | + + + + ++ + + + | +
139 | + + ++ + | ++ + | + + + + +
+
+ (bool success, bytes memory returndata) = address(token).call(data);+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ return+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token));+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
144 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 18 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.1;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @dev Collection of functions related to the address type+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ library Address {+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns true if `account` is a contract.+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * [IMPORTANT]+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * ====+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * It is unsafe to assume that an address for which this function returns+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * false is an externally-owned account (EOA) and not a contract.+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * Among others, `isContract` will return false for the following+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * types of addresses:+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * - an externally-owned account+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * - a contract in construction+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * - an address where a contract will be created+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * - an address where a contract lived, but was destroyed+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * Furthermore, `isContract` will also return true if the target contract within+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * which only has an effect at the end of a transaction.+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * ====+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * [IMPORTANT]+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * ====+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * You shouldn't rely on `isContract` to protect against flash loan attacks!+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * constructor.+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * ====+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ function isContract(address account) internal view returns (bool) {+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ // This method relies on extcodesize/address.code.length, which returns 0+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ // for contracts in construction, since the code is only stored at the end+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ // of the constructor execution.+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ return account.code.length > 0;+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @dev Replacement for Solidity's `transfer`: sends `amount` wei to+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * `recipient`, forwarding all available gas and reverting on errors.+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * of certain opcodes, possibly making contracts go over the 2300 gas limit+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * imposed by `transfer`, making them unable to receive funds via+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * `transfer`. {sendValue} removes this limitation.+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * IMPORTANT: because control is transferred to `recipient`, care must be+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ * taken to not create reentrancy vulnerabilities. Consider using+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * {ReentrancyGuard} or the+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ function sendValue(address payable recipient, uint256 amount) internal {+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ require(address(this).balance >= amount, "Address: insufficient balance");+ + |
+
66 | + + ++ + | ++ + | + + + + ++ + + + | +
67 | + + ++ + | ++ + | + + + + +
+
+ (bool success, ) = recipient.call{value: amount}("");+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ require(success, "Address: unable to send value, recipient may have reverted");+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ * @dev Performs a Solidity function call using a low level `call`. A+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ * plain `call` is an unsafe replacement for a function call: use this+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * function instead.+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ * If `target` reverts with a revert reason, it is bubbled up by this+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ * function (like regular Solidity function calls).+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * Returns the raw returned data. To convert to the expected return value,+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * - `target` must be a contract.+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * - calling `target` with `data` must not revert.+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.1._+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ function functionCall(address target, bytes memory data) internal returns (bytes memory) {+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ return functionCallWithValue(target, data, 0, "Address: low-level call failed");+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
92 | + + ++ + | ++ + | + + + + ++ + + + | +
93 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ * `errorMessage` as a fallback revert reason when `target` reverts.+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.1._+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ function functionCall(+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ address target,+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ bytes memory data,+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ string memory errorMessage+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ ) internal returns (bytes memory) {+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ return functionCallWithValue(target, data, 0, errorMessage);+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
106 | + + ++ + | ++ + | + + + + ++ + + + | +
107 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ * but also transferring `value` wei to `target`.+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * - the calling contract must have an ETH balance of at least `value`.+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * - the called Solidity function must be `payable`.+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.1._+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ return functionCallWithValue(target, data, value, "Address: low-level call with value failed");+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
121 | + + ++ + | ++ + | + + + + ++ + + + | +
122 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ * with `errorMessage` as a fallback revert reason when `target` reverts.+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.1._+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ function functionCallWithValue(+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ address target,+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ bytes memory data,+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ uint256 value,+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ string memory errorMessage+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ ) internal returns (bytes memory) {+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ require(address(this).balance >= value, "Address: insufficient balance for call");+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ (bool success, bytes memory returndata) = target.call{value: value}(data);+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ return verifyCallResultFromTarget(target, success, returndata, errorMessage);+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
138 | + + ++ + | ++ + | + + + + ++ + + + | +
139 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ * but performing a static call.+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.3._+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ return functionStaticCall(target, data, "Address: low-level static call failed");+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
148 | + + ++ + | ++ + | + + + + ++ + + + | +
149 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ * but performing a static call.+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.3._+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ function functionStaticCall(+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ address target,+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ bytes memory data,+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ string memory errorMessage+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (bytes memory) {+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ (bool success, bytes memory returndata) = target.staticcall(data);+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ return verifyCallResultFromTarget(target, success, returndata, errorMessage);+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
163 | + + ++ + | ++ + | + + + + ++ + + + | +
164 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ * but performing a delegate call.+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.4._+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ return functionDelegateCall(target, data, "Address: low-level delegate call failed");+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
173 | + + ++ + | ++ + | + + + + ++ + + + | +
174 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ * but performing a delegate call.+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v3.4._+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ function functionDelegateCall(+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ address target,+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ bytes memory data,+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ string memory errorMessage+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ ) internal returns (bytes memory) {+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ (bool success, bytes memory returndata) = target.delegatecall(data);+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ return verifyCallResultFromTarget(target, success, returndata, errorMessage);+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
188 | + + ++ + | ++ + | + + + + ++ + + + | +
189 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v4.8._+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ function verifyCallResultFromTarget(+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ address target,+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ bool success,+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ bytes memory returndata,+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ string memory errorMessage+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (bytes memory) {+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ if (success) {+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ if (returndata.length == 0) {+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ // only check isContract if the call was successful and the return data is empty+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ // otherwise we already know that it was a contract+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ require(isContract(target), "Address: call to non-contract");+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ return returndata;+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ _revert(returndata, errorMessage);+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
212 | + + ++ + | ++ + | + + + + ++ + + + | +
213 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ * revert reason or using the provided one.+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ * _Available since v4.3._+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ function verifyCallResult(+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ bool success,+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ bytes memory returndata,+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ string memory errorMessage+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ ) internal pure returns (bytes memory) {+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ if (success) {+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ return returndata;+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ _revert(returndata, errorMessage);+ + |
+
228 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
230 | + + ++ + | ++ + | + + + + ++ + + + | +
231 | + + ++ + | ++ + | + + + + +
+
+ function _revert(bytes memory returndata, string memory errorMessage) private pure {+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ // Look for revert reason and bubble it up if present+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ if (returndata.length > 0) {+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ // The easiest way to bubble the revert reason is using memory via assembly+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ let returndata_size := mload(returndata)+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ revert(add(32, returndata), returndata_size)+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ revert(errorMessage);+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
245 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 1 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @dev Provides information about the current execution context, including the+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * sender of the transaction and its data. While these are generally available+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * via msg.sender and msg.data, they should not be accessed in such a direct+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * manner, since when dealing with meta-transactions the account sending and+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * paying for execution may not be the actual sender (as far as an application+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * is concerned).+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * This contract is only required for intermediate, library-like contracts.+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ abstract contract Context {+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ function _msgSender() internal view virtual returns (address) {+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ return msg.sender;+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ function _msgData() internal view virtual returns (bytes calldata) {+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ return msg.data;+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ function _contextSuffixLength() internal view virtual returns (uint256) {+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ return 0;+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +27 / 45 (60.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ // OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)+ + |
+
3 | + + ++ + | ++ + | + + + + +
+
+ // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.+ + |
+
4 | + + ++ + | ++ + | + + + + ++ + + + | +
5 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.0;+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @dev Library for managing+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * types.+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * Sets have the following properties:+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * - Elements are added, removed, and checked for existence in constant time+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * (O(1)).+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * - Elements are enumerated in O(n). No guarantees are made on the ordering.+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * ```solidity+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * contract Example {+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * // Add the library methods+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * using EnumerableSet for EnumerableSet.AddressSet;+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * // Declare a set state variable+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * EnumerableSet.AddressSet private mySet;+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * }+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * ```+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * and `uint256` (`UintSet`) are supported.+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * [WARNING]+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * ====+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * unusable.+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * array of EnumerableSet.+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * ====+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ library EnumerableSet {+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ // To implement this library for multiple types with as little code+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ // repetition as possible, we write it in terms of a generic Set type with+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ // bytes32 values.+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ // The Set implementation uses private functions, and user-facing+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ // implementations (such as AddressSet) are just wrappers around the+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ // underlying Set.+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ // This means that we can only create new EnumerableSets for types that fit+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ // in bytes32.+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ struct Set {+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ // Storage of set values+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] _values;+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ // Position of the value in the `values` array, plus 1 because index 0+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ // means a value is not in the set.+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => uint256) _indexes;+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ * @dev Add a value to a set. O(1).+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was added to the set, that is if it was not+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * already present.+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
65 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function _add(Set storage set, bytes32 value) private returns (bool) {+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ if (!_contains(set, value)) {+ + |
+
67 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ set._values.push(value);+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ // The value is stored at length-1, but we add 1 to all indexes+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ // and use 0 as a sentinel value+ + |
+
70 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ set._indexes[value] = set._values.length;+ + |
+
71 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return true;+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
73 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return false;+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
76 | + + ++ + | ++ + | + + + + ++ + + + | +
77 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ * @dev Removes a value from a set. O(1).+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was removed from the set, that is if it was+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * present.+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
83 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function _remove(Set storage set, bytes32 value) private returns (bool) {+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ // We read and store the value's index to prevent multiple reads from the same storage slot+ + |
+
85 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 valueIndex = set._indexes[value];+ + |
+
86 | + + ++ + | ++ + | + + + + ++ + + + | +
87 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (valueIndex != 0) {+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ // Equivalent to contains(set, value)+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ // To delete an element from the _values array in O(1), we swap the element to delete with the last one in+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ // the array, and then remove the last element (sometimes called as 'swap and pop').+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ // This modifies the order of the array, as noted in {at}.+ + |
+
92 | + + ++ + | ++ + | + + + + ++ + + + | +
93 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 toDeleteIndex = valueIndex - 1;+ + |
+
94 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 lastIndex = set._values.length - 1;+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (lastIndex != toDeleteIndex) {+ + |
+
97 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 lastValue = set._values[lastIndex];+ + |
+
98 | + + ++ + | ++ + | + + + + ++ + + + | +
99 | + + ++ + | ++ + | + + + + +
+
+ // Move the last value to the index where the value to delete is+ + |
+
100 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ set._values[toDeleteIndex] = lastValue;+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ // Update the index for the moved value+ + |
+
102 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + ++ + | ++ + | + + + + +
+
+ // Delete the slot where the moved value was stored+ + |
+
106 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ set._values.pop();+ + |
+
107 | + + ++ + | ++ + | + + + + ++ + + + | +
108 | + + ++ + | ++ + | + + + + +
+
+ // Delete the index for the deleted slot+ + |
+
109 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ delete set._indexes[value];+ + |
+
110 | + + ++ + | ++ + | + + + + ++ + + + | +
111 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return true;+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
113 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return false;+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
116 | + + ++ + | ++ + | + + + + ++ + + + | +
117 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns true if the value is in the set. O(1).+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ function _contains(Set storage set, bytes32 value) private view returns (bool) {+ + |
+
121 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return set._indexes[value] != 0;+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
123 | + + ++ + | ++ + | + + + + ++ + + + | +
124 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the number of values on the set. O(1).+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ function _length(Set storage set) private view returns (uint256) {+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ return set._values.length;+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
130 | + + ++ + | ++ + | + + + + ++ + + + | +
131 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the value stored at position `index` in the set. O(1).+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ * Note that there are no guarantees on the ordering of values inside the+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ * array, and it may change when more values are added or removed.+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ * - `index` must be strictly less than {length}.+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ function _at(Set storage set, uint256 index) private view returns (bytes32) {+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ return set._values[index];+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
144 | + + ++ + | ++ + | + + + + ++ + + + | +
145 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ * @dev Return the entire set in an array+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ * this function has an unbounded cost, and using it as part of a state-changing function may render the function+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ function _values(Set storage set) private view returns (bytes32[] memory) {+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ return set._values;+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
156 | + + ++ + | ++ + | + + + + ++ + + + | +
157 | + + ++ + | ++ + | + + + + +
+
+ // Bytes32Set+ + |
+
158 | + + ++ + | ++ + | + + + + ++ + + + | +
159 | + + ++ + | ++ + | + + + + +
+
+ struct Bytes32Set {+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ Set _inner;+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
162 | + + ++ + | ++ + | + + + + ++ + + + | +
163 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ * @dev Add a value to a set. O(1).+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was added to the set, that is if it was not+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ * already present.+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
169 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {+ + |
+
170 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return _add(set._inner, value);+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
172 | + + ++ + | ++ + | + + + + ++ + + + | +
173 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ * @dev Removes a value from a set. O(1).+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was removed from the set, that is if it was+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ * present.+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
179 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {+ + |
+
180 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return _remove(set._inner, value);+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
182 | + + ++ + | ++ + | + + + + ++ + + + | +
183 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns true if the value is in the set. O(1).+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ return _contains(set._inner, value);+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
189 | + + ++ + | ++ + | + + + + ++ + + + | +
190 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the number of values in the set. O(1).+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ function length(Bytes32Set storage set) internal view returns (uint256) {+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ return _length(set._inner);+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
196 | + + ++ + | ++ + | + + + + ++ + + + | +
197 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the value stored at position `index` in the set. O(1).+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ * Note that there are no guarantees on the ordering of values inside the+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ * array, and it may change when more values are added or removed.+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ * - `index` must be strictly less than {length}.+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ return _at(set._inner, index);+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
210 | + + ++ + | ++ + | + + + + ++ + + + | +
211 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ * @dev Return the entire set in an array+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ * this function has an unbounded cost, and using it as part of a state-changing function may render the function+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] memory store = _values(set._inner);+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] memory result;+ + |
+
222 | + + ++ + | ++ + | + + + + ++ + + + | +
223 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ result := store+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
227 | + + ++ + | ++ + | + + + + ++ + + + | +
228 | + + ++ + | ++ + | + + + + +
+
+ return result;+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
230 | + + ++ + | ++ + | + + + + ++ + + + | +
231 | + + ++ + | ++ + | + + + + +
+
+ // AddressSet+ + |
+
232 | + + ++ + | ++ + | + + + + ++ + + + | +
233 | + + ++ + | ++ + | + + + + +
+
+ struct AddressSet {+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ Set _inner;+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
236 | + + ++ + | ++ + | + + + + ++ + + + | +
237 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ * @dev Add a value to a set. O(1).+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was added to the set, that is if it was not+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ * already present.+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
243 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ function add(AddressSet storage set, address value) internal returns (bool) {+ + |
+
244 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return _add(set._inner, bytes32(uint256(uint160(value))));+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
246 | + + ++ + | ++ + | + + + + ++ + + + | +
247 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ * @dev Removes a value from a set. O(1).+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was removed from the set, that is if it was+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ * present.+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
253 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ function remove(AddressSet storage set, address value) internal returns (bool) {+ + |
+
254 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return _remove(set._inner, bytes32(uint256(uint160(value))));+ + |
+
255 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
256 | + + ++ + | ++ + | + + + + ++ + + + | +
257 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns true if the value is in the set. O(1).+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ function contains(AddressSet storage set, address value) internal view returns (bool) {+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ return _contains(set._inner, bytes32(uint256(uint160(value))));+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
263 | + + ++ + | ++ + | + + + + ++ + + + | +
264 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
265 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the number of values in the set. O(1).+ + |
+
266 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
267 | + + ++ + | ++ + | + + + + +
+
+ function length(AddressSet storage set) internal view returns (uint256) {+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ return _length(set._inner);+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
270 | + + ++ + | ++ + | + + + + ++ + + + | +
271 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the value stored at position `index` in the set. O(1).+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
274 | + + ++ + | ++ + | + + + + +
+
+ * Note that there are no guarantees on the ordering of values inside the+ + |
+
275 | + + ++ + | ++ + | + + + + +
+
+ * array, and it may change when more values are added or removed.+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
278 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
279 | + + ++ + | ++ + | + + + + +
+
+ * - `index` must be strictly less than {length}.+ + |
+
280 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
281 | + + ++ + | ++ + | + + + + +
+
+ function at(AddressSet storage set, uint256 index) internal view returns (address) {+ + |
+
282 | + + ++ + | ++ + | + + + + +
+
+ return address(uint160(uint256(_at(set._inner, index))));+ + |
+
283 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
284 | + + ++ + | ++ + | + + + + ++ + + + | +
285 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
286 | + + ++ + | ++ + | + + + + +
+
+ * @dev Return the entire set in an array+ + |
+
287 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed+ + |
+
289 | + + ++ + | ++ + | + + + + +
+
+ * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that+ + |
+
290 | + + ++ + | ++ + | + + + + +
+
+ * this function has an unbounded cost, and using it as part of a state-changing function may render the function+ + |
+
291 | + + ++ + | ++ + | + + + + +
+
+ * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.+ + |
+
292 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ function values(AddressSet storage set) internal view returns (address[] memory) {+ + |
+
294 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] memory store = _values(set._inner);+ + |
+
295 | + + ++ + | ++ + | + + + + +
+
+ address[] memory result;+ + |
+
296 | + + ++ + | ++ + | + + + + ++ + + + | +
297 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
298 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
299 | + + ++ + | ++ + | + + + + +
+
+ result := store+ + |
+
300 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
301 | + + ++ + | ++ + | + + + + ++ + + + | +
302 | + + ++ + | ++ + | + + + + +
+
+ return result;+ + |
+
303 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
304 | + + ++ + | ++ + | + + + + ++ + + + | +
305 | + + ++ + | ++ + | + + + + +
+
+ // UintSet+ + |
+
306 | + + ++ + | ++ + | + + + + ++ + + + | +
307 | + + ++ + | ++ + | + + + + +
+
+ struct UintSet {+ + |
+
308 | + + ++ + | ++ + | + + + + +
+
+ Set _inner;+ + |
+
309 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
310 | + + ++ + | ++ + | + + + + ++ + + + | +
311 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
312 | + + ++ + | ++ + | + + + + +
+
+ * @dev Add a value to a set. O(1).+ + |
+
313 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
314 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was added to the set, that is if it was not+ + |
+
315 | + + ++ + | ++ + | + + + + +
+
+ * already present.+ + |
+
316 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
317 | + + ++ + | ++ + | + + + + +
+
+ function add(UintSet storage set, uint256 value) internal returns (bool) {+ + |
+
318 | + + ++ + | ++ + | + + + + +
+
+ return _add(set._inner, bytes32(value));+ + |
+
319 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
320 | + + ++ + | ++ + | + + + + ++ + + + | +
321 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
322 | + + ++ + | ++ + | + + + + +
+
+ * @dev Removes a value from a set. O(1).+ + |
+
323 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
324 | + + ++ + | ++ + | + + + + +
+
+ * Returns true if the value was removed from the set, that is if it was+ + |
+
325 | + + ++ + | ++ + | + + + + +
+
+ * present.+ + |
+
326 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
327 | + + ++ + | ++ + | + + + + +
+
+ function remove(UintSet storage set, uint256 value) internal returns (bool) {+ + |
+
328 | + + ++ + | ++ + | + + + + +
+
+ return _remove(set._inner, bytes32(value));+ + |
+
329 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
330 | + + ++ + | ++ + | + + + + ++ + + + | +
331 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
332 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns true if the value is in the set. O(1).+ + |
+
333 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
334 | + + ++ + | ++ + | + + + + +
+
+ function contains(UintSet storage set, uint256 value) internal view returns (bool) {+ + |
+
335 | + + ++ + | ++ + | + + + + +
+
+ return _contains(set._inner, bytes32(value));+ + |
+
336 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
337 | + + ++ + | ++ + | + + + + ++ + + + | +
338 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
339 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the number of values in the set. O(1).+ + |
+
340 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
341 | + + ++ + | ++ + | + + + + +
+
+ function length(UintSet storage set) internal view returns (uint256) {+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ return _length(set._inner);+ + |
+
343 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
344 | + + ++ + | ++ + | + + + + ++ + + + | +
345 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
346 | + + ++ + | ++ + | + + + + +
+
+ * @dev Returns the value stored at position `index` in the set. O(1).+ + |
+
347 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
348 | + + ++ + | ++ + | + + + + +
+
+ * Note that there are no guarantees on the ordering of values inside the+ + |
+
349 | + + ++ + | ++ + | + + + + +
+
+ * array, and it may change when more values are added or removed.+ + |
+
350 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
351 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ * - `index` must be strictly less than {length}.+ + |
+
354 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
355 | + + ++ + | ++ + | + + + + +
+
+ function at(UintSet storage set, uint256 index) internal view returns (uint256) {+ + |
+
356 | + + ++ + | ++ + | + + + + +
+
+ return uint256(_at(set._inner, index));+ + |
+
357 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
358 | + + ++ + | ++ + | + + + + ++ + + + | +
359 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
360 | + + ++ + | ++ + | + + + + +
+
+ * @dev Return the entire set in an array+ + |
+
361 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
362 | + + ++ + | ++ + | + + + + +
+
+ * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed+ + |
+
363 | + + ++ + | ++ + | + + + + +
+
+ * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that+ + |
+
364 | + + ++ + | ++ + | + + + + +
+
+ * this function has an unbounded cost, and using it as part of a state-changing function may render the function+ + |
+
365 | + + ++ + | ++ + | + + + + +
+
+ * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.+ + |
+
366 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
367 | + + ++ + | ++ + | + + + + +
+
+ function values(UintSet storage set) internal view returns (uint256[] memory) {+ + |
+
368 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] memory store = _values(set._inner);+ + |
+
369 | + + ++ + | ++ + | + + + + +
+
+ uint256[] memory result;+ + |
+
370 | + + ++ + | ++ + | + + + + ++ + + + | +
371 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
372 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
373 | + + ++ + | ++ + | + + + + +
+
+ result := store+ + |
+
374 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
375 | + + ++ + | ++ + | + + + + ++ + + + | +
376 | + + ++ + | ++ + | + + + + +
+
+ return result;+ + |
+
377 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
378 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
379 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 5 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: AGPL-3.0-only+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity >=0.8.0;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ /// @notice Arithmetic library with operations for fixed-point numbers.+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol)+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ /// @author Inspired by USM (https://github.com/usmfum/USM/blob/master/contracts/WadMath.sol)+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ library FixedPointMathLib {+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ /*//////////////////////////////////////////////////////////////+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ SIMPLIFIED FIXED POINT OPERATIONS+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ uint256 internal constant MAX_UINT256 = 2**256 - 1;+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ uint256 internal constant WAD = 1e18; // The scalar of ETH and most ERC20s.+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ function mulWadDown(uint256 x, uint256 y) internal pure returns (uint256) {+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ return mulDivDown(x, y, WAD); // Equivalent to (x * y) / WAD rounded down.+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ function mulWadUp(uint256 x, uint256 y) internal pure returns (uint256) {+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ return mulDivUp(x, y, WAD); // Equivalent to (x * y) / WAD rounded up.+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ function divWadDown(uint256 x, uint256 y) internal pure returns (uint256) {+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ return mulDivDown(x, WAD, y); // Equivalent to (x * WAD) / y rounded down.+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ function divWadUp(uint256 x, uint256 y) internal pure returns (uint256) {+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ return mulDivUp(x, WAD, y); // Equivalent to (x * WAD) / y rounded up.+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /*//////////////////////////////////////////////////////////////+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ LOW LEVEL FIXED POINT OPERATIONS+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ function mulDivDown(+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ uint256 x,+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ uint256 y,+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ uint256 denominator+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ ) internal pure returns (uint256 z) {+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ // Equivalent to require(denominator != 0 && (y == 0 || x <= type(uint256).max / y))+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ if iszero(mul(denominator, iszero(mul(y, gt(x, div(MAX_UINT256, y)))))) {+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ revert(0, 0)+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | ++ + | + + + + +
+
+ // Divide x * y by the denominator.+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ z := div(mul(x, y), denominator)+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
52 | + + ++ + | ++ + | + + + + ++ + + + | +
53 | + + ++ + | ++ + | + + + + +
+
+ function mulDivUp(+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ uint256 x,+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ uint256 y,+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ uint256 denominator+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ ) internal pure returns (uint256 z) {+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ // Equivalent to require(denominator != 0 && (y == 0 || x <= type(uint256).max / y))+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ if iszero(mul(denominator, iszero(mul(y, gt(x, div(MAX_UINT256, y)))))) {+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ revert(0, 0)+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
64 | + + ++ + | ++ + | + + + + ++ + + + | +
65 | + + ++ + | ++ + | + + + + +
+
+ // If x * y modulo the denominator is strictly greater than 0,+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ // 1 is added to round up the division of x * y by the denominator.+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ z := add(gt(mod(mul(x, y), denominator), 0), div(mul(x, y), denominator))+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ function rpow(+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ uint256 x,+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ uint256 n,+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ uint256 scalar+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ ) internal pure returns (uint256 z) {+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ switch x+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ case 0 {+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ switch n+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ case 0 {+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ // 0 ** 0 = 1+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ z := scalar+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ default {+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ // 0 ** n = 0+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ z := 0+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ default {+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ switch mod(n, 2)+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ case 0 {+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ // If n is even, store scalar in z for now.+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ z := scalar+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ default {+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ // If n is odd, store x in z for now.+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ z := x+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
100 | + + ++ + | ++ + | + + + + ++ + + + | +
101 | + + ++ + | ++ + | + + + + +
+
+ // Shifting right by 1 is like dividing by 2.+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ let half := shr(1, scalar)+ + |
+
103 | + + ++ + | ++ + | + + + + ++ + + + | +
104 | + + ++ + | ++ + | + + + + +
+
+ for {+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ // Shift n right by 1 before looping to halve it.+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ n := shr(1, n)+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ } n {+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ // Shift n right by 1 each iteration to halve it.+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ n := shr(1, n)+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ } {+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ // Revert immediately if x ** 2 would overflow.+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ // Equivalent to iszero(eq(div(xx, x), x)) here.+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ if shr(128, x) {+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ revert(0, 0)+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
116 | + + ++ + | ++ + | + + + + ++ + + + | +
117 | + + ++ + | ++ + | + + + + +
+
+ // Store x squared.+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ let xx := mul(x, x)+ + |
+
119 | + + ++ + | ++ + | + + + + ++ + + + | +
120 | + + ++ + | ++ + | + + + + +
+
+ // Round to the nearest number.+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ let xxRound := add(xx, half)+ + |
+
122 | + + ++ + | ++ + | + + + + ++ + + + | +
123 | + + ++ + | ++ + | + + + + +
+
+ // Revert if xx + half overflowed.+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ if lt(xxRound, xx) {+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ revert(0, 0)+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
127 | + + ++ + | ++ + | + + + + ++ + + + | +
128 | + + ++ + | ++ + | + + + + +
+
+ // Set x to scaled xxRound.+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ x := div(xxRound, scalar)+ + |
+
130 | + + ++ + | ++ + | + + + + ++ + + + | +
131 | + + ++ + | ++ + | + + + + +
+
+ // If n is even:+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ if mod(n, 2) {+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ // Compute z * x.+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ let zx := mul(z, x)+ + |
+
135 | + + ++ + | ++ + | + + + + ++ + + + | +
136 | + + ++ + | ++ + | + + + + +
+
+ // If z * x overflowed:+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ if iszero(eq(div(zx, x), z)) {+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ // Revert if x is non-zero.+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ if iszero(iszero(x)) {+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ revert(0, 0)+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
143 | + + ++ + | ++ + | + + + + ++ + + + | +
144 | + + ++ + | ++ + | + + + + +
+
+ // Round to the nearest number.+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ let zxRound := add(zx, half)+ + |
+
146 | + + ++ + | ++ + | + + + + ++ + + + | +
147 | + + ++ + | ++ + | + + + + +
+
+ // Revert if zx + half overflowed.+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ if lt(zxRound, zx) {+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ revert(0, 0)+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
151 | + + ++ + | ++ + | + + + + ++ + + + | +
152 | + + ++ + | ++ + | + + + + +
+
+ // Return properly scaled zxRound.+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ z := div(zxRound, scalar)+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
159 | + + ++ + | ++ + | + + + + ++ + + + | +
160 | + + ++ + | ++ + | + + + + +
+
+ /*//////////////////////////////////////////////////////////////+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ GENERAL NUMBER UTILITIES+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
163 | + + ++ + | ++ + | + + + + ++ + + + | +
164 | + + ++ + | ++ + | + + + + +
+
+ function sqrt(uint256 x) internal pure returns (uint256 z) {+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ let y := x // We start y at x, which will help us make our initial estimate.+ + |
+
168 | + + ++ + | ++ + | + + + + ++ + + + | +
169 | + + ++ + | ++ + | + + + + +
+
+ z := 181 // The "correct" value is 1, but this saves a multiplication later.+ + |
+
170 | + + ++ + | ++ + | + + + + ++ + + + | +
171 | + + ++ + | ++ + | + + + + +
+
+ // This segment is to get a reasonable initial estimate for the Babylonian method. With a bad+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ // start, the correct # of bits increases ~linearly each iteration instead of ~quadratically.+ + |
+
173 | + + ++ + | ++ + | + + + + ++ + + + | +
174 | + + ++ + | ++ + | + + + + +
+
+ // We check y >= 2^(k + 8) but shift right by k bits+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ // each branch to ensure that if x >= 256, then y >= 256.+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ if iszero(lt(y, 0x10000000000000000000000000000000000)) {+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ y := shr(128, y)+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ z := shl(64, z)+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ if iszero(lt(y, 0x1000000000000000000)) {+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ y := shr(64, y)+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ z := shl(32, z)+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ if iszero(lt(y, 0x10000000000)) {+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ y := shr(32, y)+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ z := shl(16, z)+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ if iszero(lt(y, 0x1000000)) {+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ y := shr(16, y)+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ z := shl(8, z)+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
192 | + + ++ + | ++ + | + + + + ++ + + + | +
193 | + + ++ + | ++ + | + + + + +
+
+ // Goal was to get z*z*y within a small factor of x. More iterations could+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ // get y in a tighter range. Currently, we will have y in [256, 256*2^16).+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ // We ensured y >= 256 so that the relative difference between y and y+1 is small.+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ // That's not possible if x < 256 but we can just verify those cases exhaustively.+ + |
+
197 | + + ++ + | ++ + | + + + + ++ + + + | +
198 | + + ++ + | ++ + | + + + + +
+
+ // Now, z*z*y <= x < z*z*(y+1), and y <= 2^(16+8), and either y >= 256, or x < 256.+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ // Correctness can be checked exhaustively for x < 256, so we assume y >= 256.+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ // Then z*sqrt(y) is within sqrt(257)/sqrt(256) of sqrt(x), or about 20bps.+ + |
+
201 | + + ++ + | ++ + | + + + + ++ + + + | +
202 | + + ++ + | ++ + | + + + + +
+
+ // For s in the range [1/256, 256], the estimate f(s) = (181/1024) * (s+1) is in the range+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ // (1/2.84 * sqrt(s), 2.84 * sqrt(s)), with largest error when s = 1 and when s = 256 or 1/256.+ + |
+
204 | + + ++ + | ++ + | + + + + ++ + + + | +
205 | + + ++ + | ++ + | + + + + +
+
+ // Since y is in [256, 256*2^16), let a = y/65536, so that a is in [1/256, 256). Then we can estimate+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ // sqrt(y) using sqrt(65536) * 181/1024 * (a + 1) = 181/4 * (y + 65536)/65536 = 181 * (y + 65536)/2^18.+ + |
+
207 | + + ++ + | ++ + | + + + + ++ + + + | +
208 | + + ++ + | ++ + | + + + + +
+
+ // There is no overflow risk here since y < 2^136 after the first branch above.+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ z := shr(18, mul(z, add(y, 65536))) // A mul() is saved from starting z at 181.+ + |
+
210 | + + ++ + | ++ + | + + + + ++ + + + | +
211 | + + ++ + | ++ + | + + + + +
+
+ // Given the worst case multiplicative error of 2.84 above, 7 iterations should be enough.+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ z := shr(1, add(z, div(x, z)))+ + |
+
219 | + + ++ + | ++ + | + + + + ++ + + + | +
220 | + + ++ + | ++ + | + + + + +
+
+ // If x+1 is a perfect square, the Babylonian method cycles between+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ // floor(sqrt(x)) and ceil(sqrt(x)). This statement ensures we return floor.+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ // See: https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ // Since the ceil is rare, we save gas on the assignment and repeat division in the rare case.+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ // If you don't care whether the floor or ceil square root is returned, you can remove this statement.+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ z := sub(z, lt(div(x, z), z))+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
228 | + + ++ + | ++ + | + + + + ++ + + + | +
229 | + + ++ + | ++ + | + + + + +
+
+ function unsafeMod(uint256 x, uint256 y) internal pure returns (uint256 z) {+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ // Mod x by y. Note this will return+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ // 0 instead of reverting if y is zero.+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ z := mod(x, y)+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
237 | + + ++ + | ++ + | + + + + ++ + + + | +
238 | + + ++ + | ++ + | + + + + +
+
+ function unsafeDiv(uint256 x, uint256 y) internal pure returns (uint256 r) {+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ // Divide x by y. Note this will return+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ // 0 instead of reverting if y is zero.+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ r := div(x, y)+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
246 | + + ++ + | ++ + | + + + + ++ + + + | +
247 | + + ++ + | ++ + | + + + + +
+
+ function unsafeDivUp(uint256 x, uint256 y) internal pure returns (uint256 z) {+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ /// @solidity memory-safe-assembly+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ assembly {+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ // Add 1 to x * y if x % y > 0. Note this will+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ // return 0 instead of reverting if y is zero.+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ z := add(gt(mod(x, y), 0), div(x, y))+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
254 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
255 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
256 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +13 / 19 (68.4%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable} from 'interfaces/IArbitrable.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @title Arbitrable+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @notice Arbitrable contract for The Graph to manage arbitrator and council+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ contract Arbitrable is IArbitrable {+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ address private _arbitrator;+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ address private _council;+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ address private _pendingCouncil;+ + |
+
14 | + + ++ + | ++ + | + + + + ++ + + + | +
15 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is The Graph's Council+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyCouncil() {+ + |
+
19 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (msg.sender != _council) revert Arbitrable_OnlyCouncil();+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is the pending The Graph's Council+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyPendingCouncil() {+ + |
+
27 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (msg.sender != _pendingCouncil) revert Arbitrable_OnlyPendingCouncil();+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * @notice Constructor+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @param __arbitrator The address of The Graph's Arbitrator+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * @param __council The address of The Graph's Council+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ constructor(address __arbitrator, address __council) {+ + |
+
37 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setArbitrator(__arbitrator);+ + |
+
38 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setCouncil(__council);+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ function arbitrator() public view returns (address __arbitrator) {+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ __arbitrator = _arbitrator;+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
45 | + + ++ + | ++ + | + + + + ++ + + + | +
46 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ function council() public view returns (address __council) {+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ __council = _council;+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ function pendingCouncil() public view returns (address __pendingCouncil) {+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ __pendingCouncil = _pendingCouncil;+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
55 | + + ++ + | ++ + | + + + + ++ + + + | +
56 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ function validateArbitrator(address _caller) public view {+ + |
+
58 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (_caller != _arbitrator) revert Arbitrable_OnlyArbitrator();+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ function setArbitrator(address __arbitrator) external onlyCouncil {+ + |
+
63 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setArbitrator(__arbitrator);+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ function setPendingCouncil(address __pendingCouncil) external onlyCouncil {+ + |
+
68 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setPendingCouncil(__pendingCouncil);+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrable+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ function confirmCouncil() external onlyPendingCouncil {+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ _setCouncil(_pendingCouncil);+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ delete _pendingCouncil;+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
76 | + + ++ + | ++ + | + + + + ++ + + + | +
77 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ * @notice Sets the address of The Graph's Arbitrator+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * @param __arbitrator The address of The Graph's Arbitrator+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ function _setArbitrator(address __arbitrator) private {+ + |
+
82 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _arbitrator = __arbitrator;+ + |
+
83 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit SetArbitrator(__arbitrator);+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
85 | + + ++ + | ++ + | + + + + ++ + + + | +
86 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @notice Sets the address of The Graph's Council+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ * @param __council The address of The Graph's Council+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ function _setCouncil(address __council) private {+ + |
+
91 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _council = __council;+ + |
+
92 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit SetCouncil(__council);+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * @notice Sets the address of the pending The Graph's Council+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @param __pendingCouncil The address of the pending The Graph's Council+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ function _setPendingCouncil(address __pendingCouncil) private {+ + |
+
100 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _pendingCouncil = __pendingCouncil;+ + |
+
101 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit SetPendingCouncil(__pendingCouncil);+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +3 / 27 (11.1%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {ValidatorLib} from '@defi-wonderland/prophet-core/solidity/libraries/ValidatorLib.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable, IArbitratorModule, ICouncilArbitrator, IOracle} from 'interfaces/ICouncilArbitrator.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ * @title CouncilArbitrator+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @notice Resolves disputes by arbitration by The Graph+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ contract CouncilArbitrator is ICouncilArbitrator {+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ using ValidatorLib for IOracle.Dispute;+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc ICouncilArbitrator+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ IOracle public immutable ORACLE;+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc ICouncilArbitrator+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule public immutable ARBITRATOR_MODULE;+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc ICouncilArbitrator+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable public immutable ARBITRABLE;+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc ICouncilArbitrator+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => ResolutionParameters _resolutionParams) public resolutions;+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrator+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => IOracle.DisputeStatus _status) public getAnswer;+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is the Arbitrator Module+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyArbitratorModule() {+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ if (msg.sender != address(ARBITRATOR_MODULE)) revert CouncilArbitrator_OnlyArbitratorModule();+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @notice Constructor+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _arbitratorModule The address of the Arbitrator Module+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _arbitrable The address of the Arbitrable contract+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ constructor(IArbitratorModule _arbitratorModule, IArbitrable _arbitrable) {+ + |
+
42 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ORACLE = _arbitratorModule.ORACLE();+ + |
+
43 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRATOR_MODULE = _arbitratorModule;+ + |
+
44 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRABLE = _arbitrable;+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IArbitrator+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ function resolve(+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyArbitratorModule returns (bytes memory /* _data */ ) {+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _dispute._getId();+ + |
+
54 | + + ++ + | ++ + | + + + + ++ + + + | +
55 | + + ++ + | ++ + | + + + + +
+
+ resolutions[_disputeId] = ResolutionParameters(_request, _response, _dispute);+ + |
+
56 | + + ++ + | ++ + | + + + + ++ + + + | +
57 | + + ++ + | ++ + | + + + + +
+
+ emit ResolutionStarted(_disputeId, _request, _response, _dispute);+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc ICouncilArbitrator+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ function arbitrateDispute(bytes32 _disputeId, IOracle.DisputeStatus _award) external {+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ ResolutionParameters memory _resolutionParams = resolutions[_disputeId];+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ if (_resolutionParams.dispute.disputer == address(0)) revert CouncilArbitrator_InvalidDispute();+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ if (_award <= IOracle.DisputeStatus.Escalated) revert CouncilArbitrator_InvalidAward();+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ if (getAnswer[_disputeId] != IOracle.DisputeStatus.None) revert CouncilArbitrator_DisputeAlreadyArbitrated();+ + |
+
69 | + + ++ + | ++ + | + + + + ++ + + + | +
70 | + + ++ + | ++ + | + + + + +
+
+ getAnswer[_disputeId] = _award;+ + |
+
71 | + + ++ + | ++ + | + + + + ++ + + + | +
72 | + + ++ + | ++ + | + + + + +
+
+ ORACLE.resolveDispute(_resolutionParams.request, _resolutionParams.response, _resolutionParams.dispute);+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ // If the request was not finalized, finalize it+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ if (ORACLE.finalizedAt(_resolutionParams.dispute.requestId) == 0) {+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ // If the dispute was lost, finalize with response+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ if (_award != IOracle.DisputeStatus.Lost) {+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ _resolutionParams.response.requestId = 0;+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ ORACLE.finalize(_resolutionParams.request, _resolutionParams.response);+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeArbitrated(_disputeId, _award);+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
85 | + + ++ + | ++ + | + + + + ++ + + + | +
86 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc ICouncilArbitrator+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ function getResolution(bytes32 _disputeId) external view returns (ResolutionParameters memory _resolutionParams) {+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ _resolutionParams = resolutions[_disputeId];+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
91 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +8 / 28 (28.6%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable,+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ IEBOFinalityModule,+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestCreator,+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule,+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ IOracle+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ } from 'interfaces/IEBOFinalityModule.sol';+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * @title EBOFinalityModule+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing users to index data into the subgraph+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * as a result of a request being finalized+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ contract EBOFinalityModule is Module, IEBOFinalityModule {+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ using EnumerableSet for EnumerableSet.AddressSet;+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable public immutable ARBITRABLE;+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @notice The set of EBORequestCreators allowed+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ EnumerableSet.AddressSet internal _eboRequestCreatorsAllowed;+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @notice Constructor+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * @param _oracle The address of the Oracle+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * @param _arbitrable The address of the Arbitrable contract+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ constructor(IOracle _oracle, IEBORequestCreator _eboRequestCreator, IArbitrable _arbitrable) Module(_oracle) {+ + |
+
39 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _addEBORequestCreator(_eboRequestCreator);+ + |
+
40 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRABLE = _arbitrable;+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ function finalizeRequest(+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ address _finalizer+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ ) external override(Module, IEBOFinalityModule) onlyOracle {+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ if (!_eboRequestCreatorsAllowed.contains(address(_request.requester))) revert EBOFinalityModule_InvalidRequester();+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ if (_response.requestId != 0) {+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule.RequestParameters memory _requestParams = decodeRequestData(_request.requestModuleData);+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ uint256 _block = decodeResponseData(_response.response);+ + |
+
54 | + + ++ + | ++ + | + + + + ++ + + + | +
55 | + + ++ + | ++ + | + + + + +
+
+ emit NewEpoch(_requestParams.epoch, _requestParams.chainId, _block);+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ emit RequestFinalized(_response.requestId, _response, _finalizer);+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ function amendEpoch(uint256 _epoch, string[] calldata _chainIds, uint256[] calldata _blockNumbers) external {+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
64 | + + ++ + | ++ + | + + + + ++ + + + | +
65 | + + ++ + | ++ + | + + + + +
+
+ uint256 _length = _chainIds.length;+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ if (_length != _blockNumbers.length) revert EBOFinalityModule_LengthMismatch();+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 _i; _i < _length; ++_i) {+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ emit AmendEpoch(_epoch, _chainIds[_i], _blockNumbers[_i]);+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {+ + |
+
75 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
76 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _addEBORequestCreator(_eboRequestCreator);+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {+ + |
+
81 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
82 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_eboRequestCreatorsAllowed.remove(address(_eboRequestCreator))) {+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ emit RemoveEBORequestCreator(_eboRequestCreator);+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
86 | + + ++ + | ++ + | + + + + ++ + + + | +
87 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data)+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ public+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ pure+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ returns (IEBORequestModule.RequestParameters memory _params)+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ {+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ _params = abi.decode(_data, (IEBORequestModule.RequestParameters));+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ function decodeResponseData(bytes calldata _data) public pure returns (uint256 _block) {+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ _block = abi.decode(_data, (uint256));+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
100 | + + ++ + | ++ + | + + + + ++ + + + | +
101 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBOFinalityModule+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators) {+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ _eboRequestCreators = _eboRequestCreatorsAllowed.values();+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
105 | + + ++ + | ++ + | + + + + ++ + + + | +
106 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ function moduleName() external pure returns (string memory _moduleName) {+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ _moduleName = 'EBOFinalityModule';+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
110 | + + ++ + | ++ + | + + + + ++ + + + | +
111 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ * @notice Adds the address of the EBORequestCreator+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ function _addEBORequestCreator(IEBORequestCreator _eboRequestCreator) private {+ + |
+
116 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_eboRequestCreatorsAllowed.add(address(_eboRequestCreator))) {+ + |
+
117 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit AddEBORequestCreator(_eboRequestCreator);+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
121 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +49 / 67 (73.1%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable,+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule,+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule,+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule,+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestCreator,+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule,+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ IEpochManager,+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ IOracle+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ } from 'interfaces/IEBORequestCreator.sol';+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ contract EBORequestCreator is IEBORequestCreator {+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ using EnumerableSet for EnumerableSet.Bytes32Set;+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
21 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ IOracle public immutable ORACLE;+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
24 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ IArbitrable public immutable ARBITRABLE;+ + |
+
25 | + + ++ + | ++ + | + + + + ++ + + + | +
26 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
27 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 public immutable START_EPOCH;+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
30 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ IEpochManager public epochManager;+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request public requestData;+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
36 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ mapping(string _chainId => mapping(uint256 _epoch => bytes32 _requestId)) public requestIdPerChainAndEpoch;+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @notice The set of chain ids allowed+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ EnumerableSet.Bytes32Set internal _chainIdsAllowed;+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ constructor(+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ IOracle _oracle,+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ IEpochManager _epochManager,+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable _arbitrable,+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory _requestData+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ ) {+ + |
+
49 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_requestData.nonce != 0) revert EBORequestCreator_InvalidNonce();+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRABLE = _arbitrable;+ + |
+
52 | + + ++ + | ++ + | + + + + ++ + + + | +
53 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ORACLE = _oracle;+ + |
+
54 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setEpochManager(_epochManager);+ + |
+
55 | + + ++ + | ++ + | + + + + ++ + + + | +
56 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _requestData.requester = address(this);+ + |
+
57 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData = _requestData;+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ START_EPOCH = epochManager.currentEpoch();+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
61 | + + ++ + | ++ + | + + + + ++ + + + | +
62 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(uint256 _epoch, string calldata _chainId) external {+ + |
+
64 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (_epoch > epochManager.currentEpoch() || START_EPOCH > _epoch) revert EBORequestCreator_InvalidEpoch();+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _encodedChainId = _encodeChainId(_chainId);+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ if (!_chainIdsAllowed.contains(_encodedChainId)) revert EBORequestCreator_ChainNotAdded();+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory _requestData = requestData;+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule.RequestParameters memory _requestModuleData =+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule(_requestData.requestModule).decodeRequestData(_requestData.requestModuleData);+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ _requestModuleData.epoch = _epoch;+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = requestIdPerChainAndEpoch[_chainId][_epoch];+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ if (+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ _requestId != bytes32(0)+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ && (ORACLE.finalizedAt(_requestId) == 0 || ORACLE.finalizedResponseId(_requestId) != bytes32(0))+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ ) revert EBORequestCreator_RequestAlreadyCreated();+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ _requestModuleData.chainId = _chainId;+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ _requestData.requestModuleData = abi.encode(_requestModuleData);+ + |
+
86 | + + ++ + | ++ + | + + + + ++ + + + | +
87 | + + ++ + | ++ + | + + + + +
+
+ _requestId = ORACLE.createRequest(_requestData, bytes32(0));+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ requestIdPerChainAndEpoch[_chainId][_epoch] = _requestId;+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ emit RequestCreated(_requestId, _requestData, _epoch, _chainId);+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
93 | + + ++ + | ++ + | + + + + ++ + + + | +
94 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ function addChain(string calldata _chainId) external {+ + |
+
96 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
97 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ bytes32 _encodedChainId = _encodeChainId(_chainId);+ + |
+
98 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (!_chainIdsAllowed.add(_encodedChainId)) {+ + |
+
99 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ revert EBORequestCreator_ChainAlreadyAdded();+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
101 | + + ++ + | ++ + | + + + + ++ + + + | +
102 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit ChainAdded(_chainId);+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ function removeChain(string calldata _chainId) external {+ + |
+
107 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
108 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ bytes32 _encodedChainId = _encodeChainId(_chainId);+ + |
+
109 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (!_chainIdsAllowed.remove(_encodedChainId)) {+ + |
+
110 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ revert EBORequestCreator_ChainNotAdded();+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
112 | + + ++ + | ++ + | + + + + ++ + + + | +
113 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit ChainRemoved(_chainId);+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
115 | + + ++ + | ++ + | + + + + ++ + + + | +
116 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ function setRequestModuleData(+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ address _requestModule,+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule.RequestParameters calldata _requestModuleData+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
121 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
122 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.requestModule = _requestModule;+ + |
+
123 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.requestModuleData = abi.encode(_requestModuleData);+ + |
+
124 | + + ++ + | ++ + | + + + + ++ + + + | +
125 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit RequestModuleDataSet(_requestModule, _requestModuleData);+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
127 | + + ++ + | ++ + | + + + + ++ + + + | +
128 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ function setResponseModuleData(+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ address _responseModule,+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule.RequestParameters calldata _responseModuleData+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
133 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
134 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.responseModule = _responseModule;+ + |
+
135 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.responseModuleData = abi.encode(_responseModuleData);+ + |
+
136 | + + ++ + | ++ + | + + + + ++ + + + | +
137 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit ResponseModuleDataSet(_responseModule, _responseModuleData);+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
139 | + + ++ + | ++ + | + + + + ++ + + + | +
140 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ function setDisputeModuleData(+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ address _disputeModule,+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule.RequestParameters calldata _disputeModuleData+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
145 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
146 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.disputeModule = _disputeModule;+ + |
+
147 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.disputeModuleData = abi.encode(_disputeModuleData);+ + |
+
148 | + + ++ + | ++ + | + + + + ++ + + + | +
149 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit DisputeModuleDataSet(_disputeModule, _disputeModuleData);+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
151 | + + ++ + | ++ + | + + + + ++ + + + | +
152 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ function setResolutionModuleData(+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ address _resolutionModule,+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule.RequestParameters calldata _resolutionModuleData+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
157 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
158 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.resolutionModule = _resolutionModule;+ + |
+
159 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.resolutionModuleData = abi.encode(_resolutionModuleData);+ + |
+
160 | + + ++ + | ++ + | + + + + ++ + + + | +
161 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit ResolutionModuleDataSet(_resolutionModule, _resolutionModuleData);+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
163 | + + ++ + | ++ + | + + + + ++ + + + | +
164 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ function setFinalityModuleData(address _finalityModule) external {+ + |
+
166 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
167 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestData.finalityModule = _finalityModule;+ + |
+
168 | + + ++ + | ++ + | + + + + ++ + + + | +
169 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit FinalityModuleDataSet(_finalityModule, new bytes(0));+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
171 | + + ++ + | ++ + | + + + + ++ + + + | +
172 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ function setEpochManager(IEpochManager _epochManager) external {+ + |
+
174 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
175 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setEpochManager(_epochManager);+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
177 | + + ++ + | ++ + | + + + + ++ + + + | +
178 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ function getRequestData() external view returns (IOracle.Request memory _requestData) {+ + |
+
180 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ _requestData = requestData;+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
182 | + + ++ + | ++ + | + + + + ++ + + + | +
183 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestCreator+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ function getAllowedChainIds() external view returns (bytes32[] memory _chainIds) {+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ _chainIds = _chainIdsAllowed.values();+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
187 | + + ++ + | ++ + | + + + + ++ + + + | +
188 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the epoch manager+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ * @param _epochManager The epoch manager+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ function _setEpochManager(IEpochManager _epochManager) internal {+ + |
+
193 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ epochManager = _epochManager;+ + |
+
194 | + + ++ + | ++ + | + + + + ++ + + + | +
195 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit EpochManagerSet(_epochManager);+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
197 | + + ++ + | ++ + | + + + + ++ + + + | +
198 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ * @notice Encodes the chain id+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ * @dev The chain id is hashed to have a enumerable set to avoid duplicates+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
202 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function _encodeChainId(string calldata _chainId) internal pure returns (bytes32 _encodedChainId) {+ + |
+
203 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ _encodedChainId = keccak256(abi.encodePacked(_chainId));+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
206 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +9 / 19 (47.4%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable, IEBORequestCreator, IEBORequestModule, IOracle} from 'interfaces/IEBORequestModule.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + ++ + + + | +
10 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ * @title EBORequestModule+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing users to create a request for RPC data for a specific epoch+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ contract EBORequestModule is Module, IEBORequestModule {+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ using EnumerableSet for EnumerableSet.AddressSet;+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestModule+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable public immutable ARBITRABLE;+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @notice The set of EBORequestCreators allowed+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ EnumerableSet.AddressSet internal _eboRequestCreatorsAllowed;+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @notice Constructor+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * @param _oracle The address of the Oracle+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @param _arbitrable The address of the Arbitrable contract+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ constructor(IOracle _oracle, IEBORequestCreator _eboRequestCreator, IArbitrable _arbitrable) Module(_oracle) {+ + |
+
32 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _addEBORequestCreator(_eboRequestCreator);+ + |
+
33 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRABLE = _arbitrable;+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestModule+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ bytes32, /* _requestId */+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ bytes calldata, /* _data */+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ address _requester+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ ) external view onlyOracle {+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ if (!_eboRequestCreatorsAllowed.contains(_requester)) revert EBORequestModule_InvalidRequester();+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestModule+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {+ + |
+
47 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
48 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _addEBORequestCreator(_eboRequestCreator);+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestModule+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {+ + |
+
53 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
54 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_eboRequestCreatorsAllowed.remove(address(_eboRequestCreator))) {+ + |
+
55 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit RemoveEBORequestCreator(_eboRequestCreator);+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestModule+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators) {+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ _eboRequestCreators = _eboRequestCreatorsAllowed.values();+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IEBORequestModule+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ _params = abi.decode(_data, (RequestParameters));+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ function validateParameters(bytes calldata _encodedParameters)+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ pure+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ override(IModule, Module)+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ returns (bool _valid)+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ {+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ RequestParameters memory _params = decodeRequestData(_encodedParameters);+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ _valid =+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ _params.epoch != 0 && bytes(_params.chainId).length != 0 && address(_params.accountingExtension) != address(0);+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IModule+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ function moduleName() external pure returns (string memory _moduleName) {+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ _moduleName = 'EBORequestModule';+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
85 | + + ++ + | ++ + | + + + + ++ + + + | +
86 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @notice Adds the address of the EBORequestCreator+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ function _addEBORequestCreator(IEBORequestCreator _eboRequestCreator) private {+ + |
+
91 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_eboRequestCreatorsAllowed.add(address(_eboRequestCreator))) {+ + |
+
92 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit AddEBORequestCreator(_eboRequestCreator);+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
96 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +13 / 141 (9.2%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {SafeERC20} from '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable,+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule,+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ IERC20,+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ IHorizonAccountingExtension,+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ IHorizonStaking,+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ IOracle+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ } from 'interfaces/IHorizonAccountingExtension.sol';+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ import {Validator} from '@defi-wonderland/prophet-core/solidity/contracts/Validator.sol';+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
18 | + + ++ + | ++ + | + + + + +
+
+ contract HorizonAccountingExtension is Validator, IHorizonAccountingExtension {+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ using EnumerableSet for EnumerableSet.AddressSet;+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ using SafeERC20 for IERC20;+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ IHorizonStaking public immutable HORIZON_STAKING;+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ IERC20 public immutable GRT;+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable public immutable ARBITRABLE;+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ uint64 public immutable MIN_THAWING_PERIOD;+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ uint32 public constant MAX_USERS_TO_SLASH = 1;+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ uint32 public constant MAX_VERIFIER_CUT = 1_000_000;+ + |
+
39 | + + ++ + | ++ + | + + + + ++ + + + | +
40 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ uint128 public maxUsersToCheck;+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ mapping(address _user => uint256 _bonded) public totalBonded;+ + |
+
45 | + + ++ + | ++ + | + + + + ++ + + + | +
46 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ mapping(address _bonder => mapping(bytes32 _requestId => uint256 _amount)) public bondedForRequest;+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => uint256 _amount) public pledges;+ + |
+
51 | + + ++ + | ++ + | + + + + ++ + + + | +
52 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => EscalationResult _result) public escalationResults;+ + |
+
54 | + + ++ + | ++ + | + + + + ++ + + + | +
55 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _requestId => mapping(address _pledger => bool _claimed)) public pledgerClaimed;+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ mapping(address _caller => bool _authorized) public authorizedCallers;+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => uint256 _balance) public disputeBalance;+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @notice Storing which modules have the users approved to bond their tokens.+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ mapping(address _bonder => EnumerableSet.AddressSet _modules) internal _approvals;+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ * @notice Storing the users that have pledged for a dispute.+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 _disputeId => EnumerableSet.AddressSet _pledger) internal _pledgers;+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ * @notice Constructor+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ * @param _horizonStaking The address of the Oracle+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ * @param _oracle The address of the Oracle+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ * @param _grt The address of the GRT token+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * @param _minThawingPeriod The minimum thawing period for the staking+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * @param _maxUsersToCheck The maximum number of users to check+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @param _authorizedCallers The addresses of the authorized callers+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ constructor(+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ IHorizonStaking _horizonStaking,+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ IOracle _oracle,+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _grt,+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ IArbitrable _arbitrable,+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ uint64 _minThawingPeriod,+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ uint128 _maxUsersToCheck,+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ address[] memory _authorizedCallers+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ ) Validator(_oracle) {+ + |
+
92 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ HORIZON_STAKING = _horizonStaking;+ + |
+
93 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ GRT = _grt;+ + |
+
94 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ARBITRABLE = _arbitrable;+ + |
+
95 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ MIN_THAWING_PERIOD = _minThawingPeriod;+ + |
+
96 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setMaxUsersToCheck(_maxUsersToCheck);+ + |
+
97 | + + ++ + | ++ + | + + + + ++ + + + | +
98 | + + ++ + | ++ + | + + + + +
+
+ // Set the authorized callers+ + |
+
99 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ for (uint256 _i; _i < _authorizedCallers.length; ++_i) {+ + |
+
100 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ authorizedCallers[_authorizedCallers[_i]] = true;+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
103 | + + ++ + | ++ + | + + + + ++ + + + | +
104 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is an authorized caller.+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyAuthorizedCaller() {+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ if (!authorizedCallers[msg.sender]) revert HorizonAccountingExtension_UnauthorizedCaller();+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
111 | + + ++ + | ++ + | + + + + ++ + + + | +
112 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is an allowed module used in the request.+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The request ID.+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyAllowedModule(bytes32 _requestId) {+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ if (!ORACLE.allowedModule(_requestId, msg.sender)) revert HorizonAccountingExtension_UnauthorizedModule();+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
120 | + + ++ + | ++ + | + + + + ++ + + + | +
121 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks if the user is either the requester or a proposer, or a disputer.+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The request ID.+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The address to check.+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ modifier onlyParticipant(bytes32 _requestId, address _user) {+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ if (!ORACLE.isParticipant(_requestId, _user)) revert HorizonAccountingExtension_UnauthorizedUser();+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ _;+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
130 | + + ++ + | ++ + | + + + + ++ + + + | +
131 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ function approveModule(address _module) external {+ + |
+
133 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _approvals[msg.sender].add(_module);+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
135 | + + ++ + | ++ + | + + + + ++ + + + | +
136 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ function revokeModule(address _module) external {+ + |
+
138 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _approvals[msg.sender].remove(_module);+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
140 | + + ++ + | ++ + | + + + + ++ + + + | +
141 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ function pledge(+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ address _pledger,+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ IERC20, /* _token */+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyAuthorizedCaller {+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _getId(_request);+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _validateDispute(_request, _dispute);+ + |
+
151 | + + ++ + | ++ + | + + + + ++ + + + | +
152 | + + ++ + | ++ + | + + + + +
+
+ if (!ORACLE.allowedModule(_requestId, msg.sender)) revert HorizonAccountingExtension_UnauthorizedModule();+ + |
+
153 | + + ++ + | ++ + | + + + + ++ + + + | +
154 | + + ++ + | ++ + | + + + + +
+
+ pledges[_disputeId] += _amount;+ + |
+
155 | + + ++ + | ++ + | + + + + ++ + + + | +
156 | + + ++ + | ++ + | + + + + +
+
+ _pledgers[_disputeId].add(_pledger);+ + |
+
157 | + + ++ + | ++ + | + + + + ++ + + + | +
158 | + + ++ + | ++ + | + + + + +
+
+ _bond(_pledger, _amount);+ + |
+
159 | + + ++ + | ++ + | + + + + ++ + + + | +
160 | + + ++ + | ++ + | + + + + +
+
+ emit Pledged({_pledger: _pledger, _requestId: _requestId, _disputeId: _disputeId, _amount: _amount});+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
162 | + + ++ + | ++ + | + + + + ++ + + + | +
163 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ function onSettleBondEscalation(+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ IERC20, /* _token */+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger,+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ uint256 _winningPledgersLength+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyAuthorizedCaller {+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _getId(_request);+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId = _validateDispute(_request, _dispute);+ + |
+
173 | + + ++ + | ++ + | + + + + ++ + + + | +
174 | + + ++ + | ++ + | + + + + +
+
+ if (!ORACLE.allowedModule(_requestId, msg.sender)) revert HorizonAccountingExtension_UnauthorizedModule();+ + |
+
175 | + + ++ + | ++ + | + + + + ++ + + + | +
176 | + + ++ + | ++ + | + + + + +
+
+ if (_amountPerPledger * _winningPledgersLength > pledges[_disputeId]) {+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ revert HorizonAccountingExtension_InsufficientFunds();+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
179 | + + ++ + | ++ + | + + + + ++ + + + | +
180 | + + ++ + | ++ + | + + + + +
+
+ if (escalationResults[_disputeId].requestId != bytes32(0)) {+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ revert HorizonAccountingExtension_AlreadySettled();+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
183 | + + ++ + | ++ + | + + + + ++ + + + | +
184 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule _bondEscalationModule = IBondEscalationModule(msg.sender);+ + |
+
185 | + + ++ + | ++ + | + + + + ++ + + + | +
186 | + + ++ + | ++ + | + + + + +
+
+ escalationResults[_disputeId] = EscalationResult({+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ requestId: _requestId,+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ amountPerPledger: _amountPerPledger,+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ bondSize: _bondEscalationModule.decodeRequestData(_request.disputeModuleData).bondSize,+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationModule: _bondEscalationModule+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
192 | + + ++ + | ++ + | + + + + ++ + + + | +
193 | + + ++ + | ++ + | + + + + +
+
+ emit BondEscalationSettled({+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _requestId,+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ _disputeId: _disputeId,+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ _amountPerPledger: _amountPerPledger,+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ _winningPledgersLength: _winningPledgersLength+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
200 | + + ++ + | ++ + | + + + + ++ + + + | +
201 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ function claimEscalationReward(bytes32 _disputeId, address _pledger) external {+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ EscalationResult memory _result = escalationResults[_disputeId];+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ if (_result.requestId == bytes32(0)) revert HorizonAccountingExtension_NoEscalationResult();+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _result.requestId;+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ if (pledgerClaimed[_requestId][_pledger]) revert HorizonAccountingExtension_AlreadyClaimed();+ + |
+
207 | + + ++ + | ++ + | + + + + ++ + + + | +
208 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _status = ORACLE.disputeStatus(_disputeId);+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger = _result.amountPerPledger;+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ uint256 _numberOfPledges;+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ uint256 _pledgeAmount;+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ uint256 _claimAmount;+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ uint256 _rewardAmount;+ + |
+
214 | + + ++ + | ++ + | + + + + ++ + + + | +
215 | + + ++ + | ++ + | + + + + +
+
+ if (_status == IOracle.DisputeStatus.NoResolution) {+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ _numberOfPledges = _result.bondEscalationModule.pledgesForDispute(_requestId, _pledger)+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ + _result.bondEscalationModule.pledgesAgainstDispute(_requestId, _pledger);+ + |
+
218 | + + ++ + | ++ + | + + + + ++ + + + | +
219 | + + ++ + | ++ + | + + + + +
+
+ // If no resolution, pledge amount and claim amount are the same+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ _pledgeAmount = _result.bondSize * _numberOfPledges;+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ _claimAmount = _amountPerPledger * _numberOfPledges;+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ } else {+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ _numberOfPledges = _status == IOracle.DisputeStatus.Won+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ ? _result.bondEscalationModule.pledgesForDispute(_requestId, _pledger)+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ : _result.bondEscalationModule.pledgesAgainstDispute(_requestId, _pledger);+ + |
+
226 | + + ++ + | ++ + | + + + + ++ + + + | +
227 | + + ++ + | ++ + | + + + + +
+
+ _pledgeAmount = _result.bondSize * _numberOfPledges;+ + |
+
228 | + + ++ + | ++ + | + + + + +
+
+ _claimAmount = _amountPerPledger * _numberOfPledges;+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ _rewardAmount = _claimAmount - _pledgeAmount;+ + |
+
230 | + + ++ + | ++ + | + + + + ++ + + + | +
231 | + + ++ + | ++ + | + + + + +
+
+ _rewardAmount = _claimAmount - _pledgeAmount;+ + |
+
232 | + + ++ + | ++ + | + + + + ++ + + + | +
233 | + + ++ + | ++ + | + + + + +
+
+ // Check the balance in the contract+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ // If not enough balance, slash some users to get enough balance+ + |
+
235 | + + ++ + | ++ + | + + + + +
+
+ // TODO: How many iterations should we do?+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ while (disputeBalance[_disputeId] < _rewardAmount) {+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ _slash(_disputeId, MAX_USERS_TO_SLASH, maxUsersToCheck, _result, _status);+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
239 | + + ++ + | ++ + | + + + + ++ + + + | +
240 | + + ++ + | ++ + | + + + + +
+
+ unchecked {+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ disputeBalance[_disputeId] -= _rewardAmount;+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ // Send the user the amount they won by participating in the dispute+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ GRT.safeTransfer(_pledger, _rewardAmount);+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
246 | + + ++ + | ++ + | + + + + ++ + + + | +
247 | + + ++ + | ++ + | + + + + +
+
+ // Release the winning pledges to the user+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ _unbond(_pledger, _pledgeAmount);+ + |
+
249 | + + ++ + | ++ + | + + + + ++ + + + | +
250 | + + ++ + | ++ + | + + + + +
+
+ pledgerClaimed[_requestId][_pledger] = true;+ + |
+
251 | + + ++ + | ++ + | + + + + ++ + + + | +
252 | + + ++ + | ++ + | + + + + +
+
+ pledges[_disputeId] -= _claimAmount;+ + |
+
253 | + + ++ + | ++ + | + + + + ++ + + + | +
254 | + + ++ + | ++ + | + + + + +
+
+ if (pledges[_disputeId] == 0) {+ + |
+
255 | + + ++ + | ++ + | + + + + +
+
+ delete _pledgers[_disputeId];+ + |
+
256 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
257 | + + ++ + | ++ + | + + + + ++ + + + | +
258 | + + ++ + | ++ + | + + + + +
+
+ emit EscalationRewardClaimed({+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ _requestId: _requestId,+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ _disputeId: _disputeId,+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ _pledger: _pledger,+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ _reward: _rewardAmount,+ + |
+
263 | + + ++ + | ++ + | + + + + +
+
+ _released: _pledgeAmount+ + |
+
264 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
265 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
266 | + + ++ + | ++ + | + + + + ++ + + + | +
267 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ function pay(+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId,+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ address _payer,+ + |
+
271 | + + ++ + | ++ + | + + + + +
+
+ address _receiver,+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ IERC20, /* _token */+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
274 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _payer) onlyParticipant(_requestId, _receiver) {+ + |
+
275 | + + ++ + | ++ + | + + + + +
+
+ // Discount the payer bondedForRequest+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ bondedForRequest[_payer][_requestId] -= _amount;+ + |
+
277 | + + ++ + | ++ + | + + + + ++ + + + | +
278 | + + ++ + | ++ + | + + + + +
+
+ // Discout the payer totalBonded+ + |
+
279 | + + ++ + | ++ + | + + + + +
+
+ _unbond(_payer, _amount);+ + |
+
280 | + + ++ + | ++ + | + + + + ++ + + + | +
281 | + + ++ + | ++ + | + + + + +
+
+ // Slash a payer to pay the receiver+ + |
+
282 | + + ++ + | ++ + | + + + + +
+
+ HORIZON_STAKING.slash(_payer, _amount, _amount, _receiver);+ + |
+
283 | + + ++ + | ++ + | + + + + ++ + + + | +
284 | + + ++ + | ++ + | + + + + +
+
+ emit Paid({_requestId: _requestId, _beneficiary: _receiver, _payer: _payer, _amount: _amount});+ + |
+
285 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
286 | + + ++ + | ++ + | + + + + ++ + + + | +
287 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ function bond(+ + |
+
289 | + + ++ + | ++ + | + + + + +
+
+ address _bonder,+ + |
+
290 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId,+ + |
+
291 | + + ++ + | ++ + | + + + + +
+
+ IERC20, /* _token */+ + |
+
292 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _bonder) {+ + |
+
294 | + + ++ + | ++ + | + + + + +
+
+ if (!_approvals[_bonder].contains(msg.sender)) revert HorizonAccountingExtension_NotAllowed();+ + |
+
295 | + + ++ + | ++ + | + + + + ++ + + + | +
296 | + + ++ + | ++ + | + + + + +
+
+ bondedForRequest[_bonder][_requestId] += _amount;+ + |
+
297 | + + ++ + | ++ + | + + + + ++ + + + | +
298 | + + ++ + | ++ + | + + + + +
+
+ _bond(_bonder, _amount);+ + |
+
299 | + + ++ + | ++ + | + + + + ++ + + + | +
300 | + + ++ + | ++ + | + + + + +
+
+ emit Bonded(_requestId, _bonder, _amount);+ + |
+
301 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
302 | + + ++ + | ++ + | + + + + ++ + + + | +
303 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
304 | + + ++ + | ++ + | + + + + +
+
+ function bond(+ + |
+
305 | + + ++ + | ++ + | + + + + +
+
+ address _bonder,+ + |
+
306 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId,+ + |
+
307 | + + ++ + | ++ + | + + + + +
+
+ IERC20, /* _token */+ + |
+
308 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount,+ + |
+
309 | + + ++ + | ++ + | + + + + +
+
+ address _sender+ + |
+
310 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _bonder) {+ + |
+
311 | + + ++ + | ++ + | + + + + +
+
+ bool _moduleApproved = _approvals[_bonder].contains(msg.sender);+ + |
+
312 | + + ++ + | ++ + | + + + + +
+
+ bool _senderApproved = _approvals[_bonder].contains(_sender);+ + |
+
313 | + + ++ + | ++ + | + + + + ++ + + + | +
314 | + + ++ + | ++ + | + + + + +
+
+ if (!(_moduleApproved && _senderApproved)) {+ + |
+
315 | + + ++ + | ++ + | + + + + +
+
+ revert HorizonAccountingExtension_NotAllowed();+ + |
+
316 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
317 | + + ++ + | ++ + | + + + + ++ + + + | +
318 | + + ++ + | ++ + | + + + + +
+
+ bondedForRequest[_bonder][_requestId] += _amount;+ + |
+
319 | + + ++ + | ++ + | + + + + ++ + + + | +
320 | + + ++ + | ++ + | + + + + +
+
+ _bond(_bonder, _amount);+ + |
+
321 | + + ++ + | ++ + | + + + + ++ + + + | +
322 | + + ++ + | ++ + | + + + + +
+
+ emit Bonded(_requestId, _bonder, _amount);+ + |
+
323 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
324 | + + ++ + | ++ + | + + + + ++ + + + | +
325 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
326 | + + ++ + | ++ + | + + + + +
+
+ function release(+ + |
+
327 | + + ++ + | ++ + | + + + + +
+
+ address _bonder,+ + |
+
328 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId,+ + |
+
329 | + + ++ + | ++ + | + + + + +
+
+ IERC20, /* _token */+ + |
+
330 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
331 | + + ++ + | ++ + | + + + + +
+
+ ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _bonder) {+ + |
+
332 | + + ++ + | ++ + | + + + + +
+
+ // Release the bond amount for the request for the user+ + |
+
333 | + + ++ + | ++ + | + + + + +
+
+ bondedForRequest[_bonder][_requestId] -= _amount;+ + |
+
334 | + + ++ + | ++ + | + + + + ++ + + + | +
335 | + + ++ + | ++ + | + + + + +
+
+ _unbond(_bonder, _amount);+ + |
+
336 | + + ++ + | ++ + | + + + + ++ + + + | +
337 | + + ++ + | ++ + | + + + + +
+
+ emit Released(_requestId, _bonder, _amount);+ + |
+
338 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
339 | + + ++ + | ++ + | + + + + ++ + + + | +
340 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
341 | + + ++ + | ++ + | + + + + +
+
+ function slash(bytes32 _disputeId, uint256 _usersToSlash, uint256 _maxUsersToCheck) external {+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ EscalationResult memory _result = escalationResults[_disputeId];+ + |
+
343 | + + ++ + | ++ + | + + + + ++ + + + | +
344 | + + ++ + | ++ + | + + + + +
+
+ if (_result.requestId == bytes32(0)) revert HorizonAccountingExtension_NoEscalationResult();+ + |
+
345 | + + ++ + | ++ + | + + + + ++ + + + | +
346 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _status = ORACLE.disputeStatus(_disputeId);+ + |
+
347 | + + ++ + | ++ + | + + + + ++ + + + | +
348 | + + ++ + | ++ + | + + + + +
+
+ _slash(_disputeId, _usersToSlash, _maxUsersToCheck, _result, _status);+ + |
+
349 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
350 | + + ++ + | ++ + | + + + + ++ + + + | +
351 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ function getEscalationResult(bytes32 _disputeId) external view returns (EscalationResult memory _escalationResult) {+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ _escalationResult = escalationResults[_disputeId];+ + |
+
354 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
355 | + + ++ + | ++ + | + + + + ++ + + + | +
356 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
357 | + + ++ + | ++ + | + + + + +
+
+ function approvedModules(address _user) external view returns (address[] memory _approvedModules) {+ + |
+
358 | + + ++ + | ++ + | + + + + +
+
+ _approvedModules = _approvals[_user].values();+ + |
+
359 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
360 | + + ++ + | ++ + | + + + + ++ + + + | +
361 | + + ++ + | ++ + | + + + + +
+
+ /// @inheritdoc IHorizonAccountingExtension+ + |
+
362 | + + ++ + | ++ + | + + + + +
+
+ function setMaxUsersToCheck(uint128 _maxUsersToCheck) external {+ + |
+
363 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ARBITRABLE.validateArbitrator(msg.sender);+ + |
+
364 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setMaxUsersToCheck(_maxUsersToCheck);+ + |
+
365 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
366 | + + ++ + | ++ + | + + + + ++ + + + | +
367 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
368 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the maximum number of users to check.+ + |
+
369 | + + ++ + | ++ + | + + + + +
+
+ * @param _maxUsersToCheck The maximum number of users to check.+ + |
+
370 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
371 | + + ++ + | ++ + | + + + + +
+
+ function _setMaxUsersToCheck(uint128 _maxUsersToCheck) internal {+ + |
+
372 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ maxUsersToCheck = _maxUsersToCheck;+ + |
+
373 | + + ++ + | ++ + | + + + + ++ + + + | +
374 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ emit MaxUsersToCheckSet(_maxUsersToCheck);+ + |
+
375 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
376 | + + ++ + | ++ + | + + + + ++ + + + | +
377 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
378 | + + ++ + | ++ + | + + + + +
+
+ * @notice Slash the users that have pledged for a dispute.+ + |
+
379 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The dispute id.+ + |
+
380 | + + ++ + | ++ + | + + + + +
+
+ * @param _usersToSlash The number of users to slash.+ + |
+
381 | + + ++ + | ++ + | + + + + +
+
+ * @param _maxUsersToCheck The maximum number of users to check.+ + |
+
382 | + + ++ + | ++ + | + + + + +
+
+ * @param _result The escalation result.+ + |
+
383 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The dispute status.+ + |
+
384 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
385 | + + ++ + | ++ + | + + + + +
+
+ function _slash(+ + |
+
386 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _disputeId,+ + |
+
387 | + + ++ + | ++ + | + + + + +
+
+ uint256 _usersToSlash,+ + |
+
388 | + + ++ + | ++ + | + + + + +
+
+ uint256 _maxUsersToCheck,+ + |
+
389 | + + ++ + | ++ + | + + + + +
+
+ EscalationResult memory _result,+ + |
+
390 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _status+ + |
+
391 | + + ++ + | ++ + | + + + + +
+
+ ) internal returns (uint256 _slashedAmount) {+ + |
+
392 | + + ++ + | ++ + | + + + + +
+
+ EnumerableSet.AddressSet storage _users = _pledgers[_disputeId];+ + |
+
393 | + + ++ + | ++ + | + + + + ++ + + + | +
394 | + + ++ + | ++ + | + + + + +
+
+ uint256 _slashedUsers;+ + |
+
395 | + + ++ + | ++ + | + + + + +
+
+ address _user;+ + |
+
396 | + + ++ + | ++ + | + + + + +
+
+ uint256 _slashAmount;+ + |
+
397 | + + ++ + | ++ + | + + + + ++ + + + | +
398 | + + ++ + | ++ + | + + + + +
+
+ uint256 _length = _users.length();+ + |
+
399 | + + ++ + | ++ + | + + + + ++ + + + | +
400 | + + ++ + | ++ + | + + + + +
+
+ _maxUsersToCheck = _maxUsersToCheck > _length ? _length : _maxUsersToCheck;+ + |
+
401 | + + ++ + | ++ + | + + + + ++ + + + | +
402 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 _i; _i < _maxUsersToCheck && _slashedUsers < _usersToSlash; ++_i) {+ + |
+
403 | + + ++ + | ++ + | + + + + +
+
+ _user = _users.at(0);+ + |
+
404 | + + ++ + | ++ + | + + + + ++ + + + | +
405 | + + ++ + | ++ + | + + + + +
+
+ // Check if the user is actually slashable+ + |
+
406 | + + ++ + | ++ + | + + + + +
+
+ _slashAmount = _calculateSlashAmount(_user, _result, _status);+ + |
+
407 | + + ++ + | ++ + | + + + + +
+
+ if (_slashAmount > 0) {+ + |
+
408 | + + ++ + | ++ + | + + + + +
+
+ // Slash the user+ + |
+
409 | + + ++ + | ++ + | + + + + +
+
+ HORIZON_STAKING.slash(_user, _slashAmount, _slashAmount, address(this));+ + |
+
410 | + + ++ + | ++ + | + + + + +
+
+ // TODO: What if `MIN_THAWING_PERIOD` has passed, all provision tokens have been thawed+ + |
+
411 | + + ++ + | ++ + | + + + + +
+
+ // and slashing is skipped or reverts (bricking `claimEscalationReward()`)?+ + |
+
412 | + + ++ + | ++ + | + + + + ++ + + + | +
413 | + + ++ + | ++ + | + + + + +
+
+ _unbond(_user, _slashAmount);+ + |
+
414 | + + ++ + | ++ + | + + + + ++ + + + | +
415 | + + ++ + | ++ + | + + + + +
+
+ _slashedAmount += _slashAmount;+ + |
+
416 | + + ++ + | ++ + | + + + + ++ + + + | +
417 | + + ++ + | ++ + | + + + + +
+
+ ++_slashedUsers;+ + |
+
418 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
419 | + + ++ + | ++ + | + + + + ++ + + + | +
420 | + + ++ + | ++ + | + + + + +
+
+ // Remove the user from the list of users+ + |
+
421 | + + ++ + | ++ + | + + + + +
+
+ _users.remove(_user);+ + |
+
422 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
423 | + + ++ + | ++ + | + + + + ++ + + + | +
424 | + + ++ + | ++ + | + + + + +
+
+ disputeBalance[_disputeId] += _slashedAmount;+ + |
+
425 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
426 | + + ++ + | ++ + | + + + + ++ + + + | +
427 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
428 | + + ++ + | ++ + | + + + + +
+
+ * @notice Calculate the amount to slash for a user.+ + |
+
429 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The address of the user.+ + |
+
430 | + + ++ + | ++ + | + + + + +
+
+ * @param _result The escalation result.+ + |
+
431 | + + ++ + | ++ + | + + + + +
+
+ * @param _status The dispute status.+ + |
+
432 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
433 | + + ++ + | ++ + | + + + + +
+
+ function _calculateSlashAmount(+ + |
+
434 | + + ++ + | ++ + | + + + + +
+
+ address _pledger,+ + |
+
435 | + + ++ + | ++ + | + + + + +
+
+ EscalationResult memory _result,+ + |
+
436 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus _status+ + |
+
437 | + + ++ + | ++ + | + + + + +
+
+ ) internal view returns (uint256 _slashAmount) {+ + |
+
438 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId = _result.requestId;+ + |
+
439 | + + ++ + | ++ + | + + + + ++ + + + | +
440 | + + ++ + | ++ + | + + + + +
+
+ uint256 _numberOfPledges;+ + |
+
441 | + + ++ + | ++ + | + + + + ++ + + + | +
442 | + + ++ + | ++ + | + + + + +
+
+ // If Won slash the against pledges, if Lost slash the for pledges+ + |
+
443 | + + ++ + | ++ + | + + + + +
+
+ if (_status != IOracle.DisputeStatus.NoResolution) {+ + |
+
444 | + + ++ + | ++ + | + + + + +
+
+ _numberOfPledges = _status == IOracle.DisputeStatus.Won+ + |
+
445 | + + ++ + | ++ + | + + + + +
+
+ ? _result.bondEscalationModule.pledgesAgainstDispute(_requestId, _pledger)+ + |
+
446 | + + ++ + | ++ + | + + + + +
+
+ : _result.bondEscalationModule.pledgesForDispute(_requestId, _pledger);+ + |
+
447 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
448 | + + ++ + | ++ + | + + + + ++ + + + | +
449 | + + ++ + | ++ + | + + + + +
+
+ _slashAmount = _result.bondSize * _numberOfPledges;+ + |
+
450 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
451 | + + ++ + | ++ + | + + + + ++ + + + | +
452 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
453 | + + ++ + | ++ + | + + + + +
+
+ * @notice Bonds the tokens of the user.+ + |
+
454 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user.+ + |
+
455 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of tokens to bond.+ + |
+
456 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
457 | + + ++ + | ++ + | + + + + +
+
+ function _bond(address _bonder, uint256 _amount) internal {+ + |
+
458 | + + ++ + | ++ + | + + + + +
+
+ IHorizonStaking.Provision memory _provisionData = HORIZON_STAKING.getProvision(_bonder, address(this));+ + |
+
459 | + + ++ + | ++ + | + + + + ++ + + + | +
460 | + + ++ + | ++ + | + + + + +
+
+ if (_provisionData.maxVerifierCut != MAX_VERIFIER_CUT) revert HorizonAccountingExtension_InvalidMaxVerifierCut();+ + |
+
461 | + + ++ + | ++ + | + + + + +
+
+ if (_provisionData.thawingPeriod < MIN_THAWING_PERIOD) revert HorizonAccountingExtension_InvalidThawingPeriod();+ + |
+
462 | + + ++ + | ++ + | + + + + ++ + + + | +
463 | + + ++ + | ++ + | + + + + +
+
+ uint256 _availableTokens = _provisionData.tokens - _provisionData.tokensThawing;+ + |
+
464 | + + ++ + | ++ + | + + + + +
+
+ if (_amount > _availableTokens) revert HorizonAccountingExtension_InsufficientTokens();+ + |
+
465 | + + ++ + | ++ + | + + + + ++ + + + | +
466 | + + ++ + | ++ + | + + + + +
+
+ totalBonded[_bonder] += _amount;+ + |
+
467 | + + ++ + | ++ + | + + + + ++ + + + | +
468 | + + ++ + | ++ + | + + + + +
+
+ if (totalBonded[_bonder] > _provisionData.tokens) {+ + |
+
469 | + + ++ + | ++ + | + + + + +
+
+ revert HorizonAccountingExtension_InsufficientBondedTokens();+ + |
+
470 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
471 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
472 | + + ++ + | ++ + | + + + + ++ + + + | +
473 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
474 | + + ++ + | ++ + | + + + + +
+
+ * @notice Unbonds the tokens of the user.+ + |
+
475 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user.+ + |
+
476 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of tokens to unbond.+ + |
+
477 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
478 | + + ++ + | ++ + | + + + + +
+
+ function _unbond(address _bonder, uint256 _amount) internal {+ + |
+
479 | + + ++ + | ++ + | + + + + +
+
+ if (_amount > totalBonded[_bonder]) revert HorizonAccountingExtension_InsufficientBondedTokens();+ + |
+
480 | + + ++ + | ++ + | + + + + +
+
+ totalBonded[_bonder] -= _amount;+ + |
+
481 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
482 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
483 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ * @title Arbitrable+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ * @notice Makes a contract subject to arbitration by The Graph+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ interface IArbitrable {+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
12 | + + ++ + | ++ + | + + + + ++ + + + | +
13 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when The Graph's Arbitrator is set+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @param _arbitrator The address of The Graph's Arbitrator+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ event SetArbitrator(address indexed _arbitrator);+ + |
+
18 | + + ++ + | ++ + | + + + + ++ + + + | +
19 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when The Graph's Council is set+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @param _council The address of The Graph's Council+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ event SetCouncil(address indexed _council);+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the pending The Graph's Council is set+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ * @param _pendingCouncil The address of the pending The Graph's Council+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ event SetPendingCouncil(address indexed _pendingCouncil);+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the caller is not The Graph's Arbitrator+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ error Arbitrable_OnlyArbitrator();+ + |
+
39 | + + ++ + | ++ + | + + + + ++ + + + | +
40 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the caller is not The Graph's Council+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ error Arbitrable_OnlyCouncil();+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the caller is not the pending The Graph's Council+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ error Arbitrable_OnlyPendingCouncil();+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of The Graph's Arbitrator+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @return __arbitrator The address of The Graph's Arbitrator+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ function arbitrator() external view returns (address __arbitrator);+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of The Graph's Council+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * @return __council The address of The Graph's Council+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ function council() external view returns (address __council);+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the pending The Graph's Council+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * @return __pendingCouncil The address of the pending The Graph's Council+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ function pendingCouncil() external view returns (address __pendingCouncil);+ + |
+
71 | + + ++ + | ++ + | + + + + ++ + + + | +
72 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks that the caller is The Graph's Arbitrator+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ function validateArbitrator(address _caller) external view;+ + |
+
76 | + + ++ + | ++ + | + + + + ++ + + + | +
77 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * @notice Changes the address of The Graph's Arbitrator+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Council+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @param _arbitrator The address of The Graph's Arbitrator+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ function setArbitrator(address _arbitrator) external;+ + |
+
87 | + + ++ + | ++ + | + + + + ++ + + + | +
88 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ * @notice Sets the address of the pending The Graph's Council+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Council+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ * @param _pendingCouncil The address of the pending The Graph's Council+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ function setPendingCouncil(address _pendingCouncil) external;+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * @notice Changes the address of The Graph's Council to the pending one+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by the pending The Graph's Council+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ function confirmCouncil() external;+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
101 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitratorModule} from+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/modules/resolution/IArbitratorModule.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable} from 'interfaces/IArbitrable.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @title CouncilArbitrator+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @notice Resolves disputes by arbitration by The Graph+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ interface ICouncilArbitrator is IArbitrator {+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @notice Parameters of the resolution as stored in the contract+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @param request The request data+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param response The response data+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param dispute The dispute data+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ struct ResolutionParameters {+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request request;+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response response;+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute dispute;+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a resolution is started by the Arbitrator Module+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute that the resolution was started for+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request data+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The response data+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The dispute data+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ event ResolutionStarted(+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _disputeId, IOracle.Request _request, IOracle.Response _response, IOracle.Dispute _dispute+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a dispute is arbitrated by The Graph's Arbitrator+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute that was arbitrated+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ * @param _award The final result of the resolution+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ event DisputeArbitrated(bytes32 indexed _disputeId, IOracle.DisputeStatus _award);+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the caller is not the Arbitrator Module+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ error CouncilArbitrator_OnlyArbitratorModule();+ + |
+
62 | + + ++ + | ++ + | + + + + ++ + + + | +
63 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to arbitrate a dispute with no pending resolution+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ error CouncilArbitrator_InvalidDispute();+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to arbitrate a dispute with an invalid award+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ error CouncilArbitrator_InvalidAward();+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to arbitrate a dispute that is already arbitrated+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ error CouncilArbitrator_DisputeAlreadyArbitrated();+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
81 | + + ++ + | ++ + | + + + + ++ + + + | +
82 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the Oracle+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @return _oracle The address of the Oracle+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ function ORACLE() external view returns (IOracle _oracle);+ + |
+
87 | + + ++ + | ++ + | + + + + ++ + + + | +
88 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the Arbitrator Module+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ * @return _arbitratorModule The address of the Arbitrator Module+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ function ARBITRATOR_MODULE() external view returns (IArbitratorModule _arbitratorModule);+ + |
+
93 | + + ++ + | ++ + | + + + + ++ + + + | +
94 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the arbitrable contract+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * @return _ARBITRABLE The address of the arbitrable contract+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);+ + |
+
99 | + + ++ + | ++ + | + + + + ++ + + + | +
100 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the resolution data for a dispute+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ * @return _request The request data+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * @return _response The response data+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @return _dispute The dispute data+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ function resolutions(bytes32 _disputeId)+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ view+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ returns (IOracle.Request memory _request, IOracle.Response memory _response, IOracle.Dispute memory _dispute);+ + |
+
111 | + + ++ + | ++ + | + + + + ++ + + + | +
112 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the resolution parameters for a dispute+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @return _resolutionParams The resolution parameters+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ function getResolution(bytes32 _disputeId) external view returns (ResolutionParameters memory _resolutionParams);+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
122 | + + ++ + | ++ + | + + + + ++ + + + | +
123 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ * @notice Publishes the arbitration award, resolves a dispute and, if applicable, finalizes a request+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Arbitrator+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ * @param _award The result of the resolution for the dispute+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ function arbitrateDispute(bytes32 _disputeId, IOracle.DisputeStatus _award) external;+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
131 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IFinalityModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/finality/IFinalityModule.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable} from 'interfaces/IArbitrable.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import {IEBORequestCreator} from 'interfaces/IEBORequestCreator.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ * @title EBOFinalityModule+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing users to index data into the subgraph+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * as a result of a request being finalized+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ interface IEBOFinalityModule is IFinalityModule {+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the block number has been resolved for a particular epoch-chainId pair+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param _epoch The new epoch+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain ID+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _blockNumber The block number for the epoch-chainId pair+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ event NewEpoch(uint256 indexed _epoch, string indexed _chainId, uint256 _blockNumber);+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a block number is amended+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * @param _epoch The epoch to amend+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain ID to amend+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @param _blockNumber The amended block number+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ event AmendEpoch(uint256 indexed _epoch, string indexed _chainId, uint256 _blockNumber);+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the EBORequestCreator is added+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ event AddEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when an EBORequestCreator is removed+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ event RemoveEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
52 | + + ++ + | ++ + | + + + + ++ + + + | +
53 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the requester is not the EBORequestCreator+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ error EBOFinalityModule_InvalidRequester();+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the lengths of chain IDs and block numbers do not match+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ error EBOFinalityModule_LengthMismatch();+ + |
+
62 | + + ++ + | ++ + | + + + + ++ + + + | +
63 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
66 | + + ++ + | ++ + | + + + + ++ + + + | +
67 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the arbitrable contract+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @return _ARBITRABLE The address of the arbitrable contract+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the EBORequestCreators allowed+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ * @return _eboRequestCreators The EBORequestCreators allowed+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators);+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @notice Finalizes the request by publishing the response+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by the Oracle+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request being finalized+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @param _response The final response+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalizer The address that initiated the finalization+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ function finalizeRequest(+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response calldata _response,+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ address _finalizer+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows to amend data in case of an error or an emergency+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Arbitrator+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ * @param _epoch The epoch to amend+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainIds The chain IDs to amend+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * @param _blockNumbers The amended block numbers+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ function amendEpoch(uint256 _epoch, string[] calldata _chainIds, uint256[] calldata _blockNumbers) external;+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ * @notice Adds the address of the EBORequestCreator+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Arbitrator+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;+ + |
+
111 | + + ++ + | ++ + | + + + + ++ + + + | +
112 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ * @notice Removes the address of the EBORequestCreator+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Arbitrator+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ * @notice Decodes the request data+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The request data+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * @return _params The decoded request data+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data)+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ pure+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ returns (IEBORequestModule.RequestParameters memory _params);+ + |
+
128 | + + ++ + | ++ + | + + + + ++ + + + | +
129 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ * @notice Decodes the response data+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The response data+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * @return _block The decoded response data which is the block number+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ function decodeResponseData(bytes calldata _data) external pure returns (uint256 _block);+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
136 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IBondEscalationModule} from+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/modules/dispute/IBondEscalationModule.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitratorModule} from+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/modules/resolution/IArbitratorModule.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ import {IBondedResponseModule} from+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/modules/response/IBondedResponseModule.sol';+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ import {IEpochManager} from 'interfaces/external/IEpochManager.sol';+ + |
+
12 | + + ++ + | ++ + | + + + + ++ + + + | +
13 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable} from 'interfaces/IArbitrable.sol';+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol';+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ interface IEBORequestCreator {+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a request is created+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The id of the request+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The request created+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param _epoch The epoch of the request+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id of the request+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ event RequestCreated(+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, IOracle.Request _request, uint256 indexed _epoch, string indexed _chainId+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a chain is added+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id added+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ event ChainAdded(string indexed _chainId);+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when a chain is removed+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id removed+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ event ChainRemoved(string indexed _chainId);+ + |
+
43 | + + ++ + | ++ + | + + + + ++ + + + | +
44 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the request data module is set+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestModule The request module+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestModuleData The request module data+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ event RequestModuleDataSet(address indexed _requestModule, IEBORequestModule.RequestParameters _requestModuleData);+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the response data module is set+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseModule The response module+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseModuleData The response module data+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ event ResponseModuleDataSet(+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ address indexed _responseModule, IBondedResponseModule.RequestParameters _responseModuleData+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the dispute data module is set+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeModule The dispute module+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeModuleData The dispute module data+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ event DisputeModuleDataSet(+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ address indexed _disputeModule, IBondEscalationModule.RequestParameters _disputeModuleData+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
68 | + + ++ + | ++ + | + + + + ++ + + + | +
69 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the resolution data module is set+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ * @param _resolutionModule The resolution module+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ * @param _resolutionModuleData The resolution module data+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ event ResolutionModuleDataSet(+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ address indexed _resolutionModule, IArbitratorModule.RequestParameters _resolutionModuleData+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the finality data module is set+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalityModule The finality module+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalityModuleData The finality module data+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ event FinalityModuleDataSet(address indexed _finalityModule, bytes _finalityModuleData);+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the epoch manager is set+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @param _epochManager The epoch manager+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ event EpochManagerSet(IEpochManager indexed _epochManager);+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the nonce is not zero+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ error EBORequestCreator_InvalidNonce();+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the chain is already added+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ error EBORequestCreator_ChainAlreadyAdded();+ + |
+
103 | + + ++ + | ++ + | + + + + ++ + + + | +
104 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the request is already created+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ error EBORequestCreator_RequestAlreadyCreated();+ + |
+
108 | + + ++ + | ++ + | + + + + ++ + + + | +
109 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the chain is not added+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ error EBORequestCreator_ChainNotAdded();+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the epoch is not valid+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ error EBORequestCreator_InvalidEpoch();+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
122 | + + ++ + | ++ + | + + + + ++ + + + | +
123 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ * @notice The oracle contract+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ * @return _ORACLE The oracle contract+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ function ORACLE() external view returns (IOracle _ORACLE);+ + |
+
128 | + + ++ + | ++ + | + + + + ++ + + + | +
129 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ * @notice The first valid epoch to create requests+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ * @return _START_EPOCH The start epoch+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ function START_EPOCH() external view returns (uint256 _START_EPOCH);+ + |
+
134 | + + ++ + | ++ + | + + + + ++ + + + | +
135 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
136 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the arbitrable contract+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ * @return _ARBITRABLE The address of the arbitrable contract+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);+ + |
+
140 | + + ++ + | ++ + | + + + + ++ + + + | +
141 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ * @notice The epoch manager contract+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ * @return _epochManager The epoch manager contract+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ function epochManager() external view returns (IEpochManager _epochManager);+ + |
+
146 | + + ++ + | ++ + | + + + + ++ + + + | +
147 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ * @notice The request data+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ * @return _nonce The nonce+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ * @return _requester The requester address+ + |
+
151 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestModule The request module address+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseModule The response module address+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeModule The dispute module address+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ * @return _resolutionModule The resolution module address+ + |
+
155 | + + ++ + | ++ + | + + + + +
+
+ * @return _finalityModule The finality module address+ + |
+
156 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestModuleData The request module data+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ * @return _responseModuleData The response module data+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ * @return _disputeModuleData The dispute module data+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ * @return _resolutionModuleData The resolution module data+ + |
+
160 | + + ++ + | ++ + | + + + + +
+
+ * @return _finalityModuleData The finality module data+ + |
+
161 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ function requestData()+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ view+ + |
+
165 | + + ++ + | ++ + | + + + + +
+
+ returns (+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ uint96 _nonce,+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ address _requester,+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ address _requestModule,+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ address _responseModule,+ + |
+
170 | + + ++ + | ++ + | + + + + +
+
+ address _disputeModule,+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ address _resolutionModule,+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ address _finalityModule,+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ bytes memory _requestModuleData,+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ bytes memory _responseModuleData,+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ bytes memory _disputeModuleData,+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ bytes memory _resolutionModuleData,+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ bytes memory _finalityModuleData+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
179 | + + ++ + | ++ + | + + + + ++ + + + | +
180 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ * @notice The request data+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestData The request data+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ function getRequestData() external view returns (IOracle.Request memory _requestData);+ + |
+
185 | + + ++ + | ++ + | + + + + ++ + + + | +
186 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ * @notice The request id per chain and epoch+ + |
+
188 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ * @param _epoch The epoch+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The request id+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ function requestIdPerChainAndEpoch(+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ string calldata _chainId,+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ uint256 _epoch+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ ) external view returns (bytes32 _requestId);+ + |
+
196 | + + ++ + | ++ + | + + + + ++ + + + | +
197 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
198 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the allowed chain ids+ + |
+
199 | + + ++ + | ++ + | + + + + +
+
+ * @return _chainIds The allowed chain ids+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ function getAllowedChainIds() external view returns (bytes32[] memory _chainIds);+ + |
+
202 | + + ++ + | ++ + | + + + + ++ + + + | +
203 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
204 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
205 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
206 | + + ++ + | ++ + | + + + + ++ + + + | +
207 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ * @notice Create request+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ * @param _epoch The epoch of the request+ + |
+
210 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id to update+ + |
+
211 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(uint256 _epoch, string calldata _chainId) external;+ + |
+
213 | + + ++ + | ++ + | + + + + ++ + + + | +
214 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ * @notice Add a chain to the allowed chains which can be updated+ + |
+
216 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id to add+ + |
+
217 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ function addChain(string calldata _chainId) external;+ + |
+
219 | + + ++ + | ++ + | + + + + ++ + + + | +
220 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ * @notice Remove a chain from the allowed chains which can be updated+ + |
+
222 | + + ++ + | ++ + | + + + + +
+
+ * @param _chainId The chain id to remove+ + |
+
223 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ function removeChain(string calldata _chainId) external;+ + |
+
225 | + + ++ + | ++ + | + + + + ++ + + + | +
226 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the request data module+ + |
+
228 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestModule The request module+ + |
+
229 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestModuleData The request module data+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ function setRequestModuleData(+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ address _requestModule,+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule.RequestParameters calldata _requestModuleData+ + |
+
234 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
235 | + + ++ + | ++ + | + + + + ++ + + + | +
236 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the response data module+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseModule The response module+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ * @param _responseModuleData The response module data+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
241 | + + ++ + | ++ + | + + + + +
+
+ function setResponseModuleData(+ + |
+
242 | + + ++ + | ++ + | + + + + +
+
+ address _responseModule,+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule.RequestParameters calldata _responseModuleData+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
245 | + + ++ + | ++ + | + + + + ++ + + + | +
246 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
247 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the dispute data module+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeModule The dispute module+ + |
+
249 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeModuleData The dispute module data+ + |
+
250 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ function setDisputeModuleData(+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ address _disputeModule,+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule.RequestParameters calldata _disputeModuleData+ + |
+
254 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
255 | + + ++ + | ++ + | + + + + ++ + + + | +
256 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
257 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the resolution data module+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ * @param _resolutionModule The resolution module+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ * @param _resolutionModuleData The resolution module data+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ function setResolutionModuleData(+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ address _resolutionModule,+ + |
+
263 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule.RequestParameters calldata _resolutionModuleData+ + |
+
264 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
265 | + + ++ + | ++ + | + + + + ++ + + + | +
266 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
267 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the finality data module+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ * @param _finalityModule The finality module+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ function setFinalityModuleData(address _finalityModule) external;+ + |
+
271 | + + ++ + | ++ + | + + + + ++ + + + | +
272 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ * @notice Set the epoch manager+ + |
+
274 | + + ++ + | ++ + | + + + + +
+
+ * @param _epochManager The epoch manager+ + |
+
275 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ function setEpochManager(IEpochManager _epochManager) external;+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
278 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IRequestModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/request/IRequestModule.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ import {IAccountingExtension} from+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IAccountingExtension.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable} from 'interfaces/IArbitrable.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ import {IEBORequestCreator} from 'interfaces/IEBORequestCreator.sol';+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ * @title EBORequestModule+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * @notice Module allowing users to create a request for RPC data for a specific epoch+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ interface IEBORequestModule is IRequestModule {+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @notice Parameters of the request as stored in the module+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param epoch The epoch for which the data is requested+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ * @param chainId The chain ID for which the data is requested+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ * @param accountingExtension The address of the AccountingExtension+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ * @param paymentAmount The amount of payment for the request+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ struct RequestParameters {+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ uint256 epoch;+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ string chainId;+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ IAccountingExtension accountingExtension;+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ uint256 paymentAmount;+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
38 | + + ++ + | ++ + | + + + + ++ + + + | +
39 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when the EBORequestCreator is added+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ event AddEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when an EBORequestCreator is removed+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ event RemoveEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
54 | + + ++ + | ++ + | + + + + ++ + + + | +
55 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the requester is not the EBORequestCreator+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ error EBORequestModule_InvalidRequester();+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the address of the arbitrable contract+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @return _ARBITRABLE The address of the arbitrable contract+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);+ + |
+
69 | + + ++ + | ++ + | + + + + ++ + + + | +
70 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the EBORequestCreators allowed+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ * @return _eboRequestCreators The EBORequestCreators allowed+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators);+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
79 | + + ++ + | ++ + | + + + + ++ + + + | +
80 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @notice Executes pre-request logic, bonding the requester's funds+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by the Oracle+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The data of the request+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * @param _requester The address of the requester+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ function createRequest(bytes32 _requestId, bytes calldata _data, address _requester) external;+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ * @notice Adds the address of the EBORequestCreator+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Arbitrator+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * @notice Removes an EBORequestCreator+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * @dev Callable only by The Graph's Arbitrator+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ * @param _eboRequestCreator The address of the EBORequestCreator+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;+ + |
+
102 | + + ++ + | ++ + | + + + + ++ + + + | +
103 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * @notice Determines how to decode the inputted request data+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @param _data The encoded request parameters+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ * @return _params The struct containing the parameters for the request+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ function decodeRequestData(bytes calldata _data) external pure returns (RequestParameters memory _params);+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
110 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IValidator} from '@defi-wonderland/prophet-core/solidity/interfaces/IValidator.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ import {IBondEscalationModule} from+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/modules/dispute/IBondEscalationModule.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable} from 'interfaces/IArbitrable.sol';+ + |
+
12 | + + ++ + | ++ + | + + + + ++ + + + | +
13 | + + ++ + | ++ + | + + + + +
+
+ interface IHorizonAccountingExtension is IValidator {+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ EVENTS+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
18 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * @notice A payment between users has been made+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * @param _beneficiary The user receiving the tokens+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ * @param _payer The user who is getting its tokens transferred+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT transferred+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ event Paid(bytes32 indexed _requestId, address indexed _beneficiary, address indexed _payer, uint256 _amount);+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @notice User's funds have been bonded+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The user who is getting its tokens bonded+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT bonded+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ event Bonded(bytes32 indexed _requestId, address indexed _bonder, uint256 _amount);+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * @notice User's funds have been released+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * @param _beneficiary The user who is getting its tokens released+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT released+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ event Released(bytes32 indexed _requestId, address indexed _beneficiary, uint256 _amount);+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ * @notice A user pledged tokens for one of the sides of a dispute+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The user who pledged the tokens+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT pledged by the user+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ event Pledged(address indexed _pledger, bytes32 indexed _requestId, bytes32 indexed _disputeId, uint256 _amount);+ + |
+
52 | + + ++ + | ++ + | + + + + ++ + + + | +
53 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ * @notice The pledgers of the winning side of a dispute have been paid+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ * @param _winningPledgers The users who got paid for pledging for the winning side+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * @param _amountPerPledger The amount of GRT paid to each of the winning pledgers+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ event WinningPledgersPaid(+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId,+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _disputeId,+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ address[] indexed _winningPledgers,+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ * @notice A bond escalation has been settled+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ * @param _amountPerPledger The amount of GRT to be paid for each winning pledgers+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ * @param _winningPledgersLength The number of winning pledgers+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ event BondEscalationSettled(+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId, bytes32 _disputeId, uint256 _amountPerPledger, uint256 _winningPledgersLength+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
79 | + + ++ + | ++ + | + + + + ++ + + + | +
80 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ * @notice A user claimed their reward for pledging for the winning side of a dispute+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the bond-escalated request+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The user who claimed their reward+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ * @param _reward The amount of GRT the user claimed+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ * @param _released The amount of GRT released to the user+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ event EscalationRewardClaimed(+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ bytes32 indexed _requestId, bytes32 indexed _disputeId, address indexed _pledger, uint256 _reward, uint256 _released+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
92 | + + ++ + | ++ + | + + + + ++ + + + | +
93 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ * @notice Emitted when max users to check is set+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * @param _maxUsersToCheck The new value of max users to check+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ event MaxUsersToCheckSet(uint256 _maxUsersToCheck);+ + |
+
99 | + + ++ + | ++ + | + + + + ++ + + + | +
100 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ ERRORS+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
103 | + + ++ + | ++ + | + + + + ++ + + + | +
104 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when depositing tokens with a fee on transfer+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_FeeOnTransferToken();+ + |
+
108 | + + ++ + | ++ + | + + + + ++ + + + | +
109 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the module bonding user tokens hasn't been approved by the user.+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_NotAllowed();+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when an `onlyAllowedModule` function is called by something+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ * else than a module being used in the corresponding request+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_UnauthorizedModule();+ + |
+
119 | + + ++ + | ++ + | + + + + ++ + + + | +
120 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when an `onlyParticipant` function is called with an address+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * that is not part of the request.+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_UnauthorizedUser();+ + |
+
125 | + + ++ + | ++ + | + + + + ++ + + + | +
126 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the thawing period is invalid+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_InvalidThawingPeriod();+ + |
+
130 | + + ++ + | ++ + | + + + + ++ + + + | +
131 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user has insufficient tokens+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_InsufficientTokens();+ + |
+
135 | + + ++ + | ++ + | + + + + ++ + + + | +
136 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
137 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user has insufficient bonded tokens+ + |
+
138 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
139 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_InsufficientBondedTokens();+ + |
+
140 | + + ++ + | ++ + | + + + + ++ + + + | +
141 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user tries to claim their pledge for an escalation that was already claimed+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_AlreadyClaimed();+ + |
+
145 | + + ++ + | ++ + | + + + + ++ + + + | +
146 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user tries to claim their pledge for an escalation that wasn't finished yet+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_NoEscalationResult();+ + |
+
150 | + + ++ + | ++ + | + + + + ++ + + + | +
151 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
152 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the user doesn't have enough funds to pledge+ + |
+
153 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
154 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_InsufficientFunds();+ + |
+
155 | + + ++ + | ++ + | + + + + ++ + + + | +
156 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
157 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when trying to settle an already settled escalation+ + |
+
158 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
159 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_AlreadySettled();+ + |
+
160 | + + ++ + | ++ + | + + + + ++ + + + | +
161 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
162 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when the max verifier cut is invalid+ + |
+
163 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
164 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_InvalidMaxVerifierCut();+ + |
+
165 | + + ++ + | ++ + | + + + + ++ + + + | +
166 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
167 | + + ++ + | ++ + | + + + + +
+
+ * @notice Thrown when caller is not authorized+ + |
+
168 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ error HorizonAccountingExtension_UnauthorizedCaller();+ + |
+
170 | + + ++ + | ++ + | + + + + ++ + + + | +
171 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ STRUCTS+ + |
+
173 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
174 | + + ++ + | ++ + | + + + + ++ + + + | +
175 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
176 | + + ++ + | ++ + | + + + + +
+
+ * @notice Contains the data of the result of an escalation. Is used by users to claim their pledges+ + |
+
177 | + + ++ + | ++ + | + + + + +
+
+ * @param requestId The ID of the bond-escalated request+ + |
+
178 | + + ++ + | ++ + | + + + + +
+
+ * @param amountPerPledger The amount of token paid to each of the winning pledgers+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ * @param bondSize The size of the bond required for bond escalation+ + |
+
180 | + + ++ + | ++ + | + + + + +
+
+ * @param bondEscalationModule The address of the bond escalation module that was used+ + |
+
181 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ struct EscalationResult {+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ bytes32 requestId;+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ uint256 amountPerPledger;+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ uint256 bondSize;+ + |
+
186 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule bondEscalationModule;+ + |
+
187 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
188 | + + ++ + | ++ + | + + + + ++ + + + | +
189 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
190 | + + ++ + | ++ + | + + + + +
+
+ VARIABLES+ + |
+
191 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
192 | + + ++ + | ++ + | + + + + ++ + + + | +
193 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ * @notice The Horizon Staking contract+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ * @return _horizonStaking The Horizon Staking contract+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ function HORIZON_STAKING() external view returns (IHorizonStaking _horizonStaking);+ + |
+
198 | + + ++ + | ++ + | + + + + ++ + + + | +
199 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
200 | + + ++ + | ++ + | + + + + +
+
+ * @notice The GRT token+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ * @return _GRT The GRT token+ + |
+
202 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
203 | + + ++ + | ++ + | + + + + +
+
+ function GRT() external view returns (IERC20 _GRT);+ + |
+
204 | + + ++ + | ++ + | + + + + ++ + + + | +
205 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
206 | + + ++ + | ++ + | + + + + +
+
+ * @notice The Arbitrable contract+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ * @return _arbitrable The Arbitrable contract+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
209 | + + ++ + | ++ + | + + + + +
+
+ function ARBITRABLE() external view returns (IArbitrable _arbitrable);+ + |
+
210 | + + ++ + | ++ + | + + + + ++ + + + | +
211 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
212 | + + ++ + | ++ + | + + + + +
+
+ * @notice The minimum thawing period+ + |
+
213 | + + ++ + | ++ + | + + + + +
+
+ * @return _MIN_THAWING_PERIOD The minimum thawing period+ + |
+
214 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
215 | + + ++ + | ++ + | + + + + +
+
+ function MIN_THAWING_PERIOD() external view returns (uint64 _MIN_THAWING_PERIOD);+ + |
+
216 | + + ++ + | ++ + | + + + + ++ + + + | +
217 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
218 | + + ++ + | ++ + | + + + + +
+
+ * @notice The maximum verifier cut+ + |
+
219 | + + ++ + | ++ + | + + + + +
+
+ * @return _MAX_VERIFIER_CUT The maximum verifier cut+ + |
+
220 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
221 | + + ++ + | ++ + | + + + + +
+
+ function MAX_VERIFIER_CUT() external view returns (uint32 _MAX_VERIFIER_CUT);+ + |
+
222 | + + ++ + | ++ + | + + + + ++ + + + | +
223 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
224 | + + ++ + | ++ + | + + + + +
+
+ * @notice The max number of users to slash+ + |
+
225 | + + ++ + | ++ + | + + + + +
+
+ * @return _MAX_USERS_TO_SLASH The number of users to slash+ + |
+
226 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
227 | + + ++ + | ++ + | + + + + +
+
+ function MAX_USERS_TO_SLASH() external view returns (uint32 _MAX_USERS_TO_SLASH);+ + |
+
228 | + + ++ + | ++ + | + + + + ++ + + + | +
229 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
230 | + + ++ + | ++ + | + + + + +
+
+ * @notice The maximum users to check+ + |
+
231 | + + ++ + | ++ + | + + + + +
+
+ * @return _maxUsersToCheck The maximum users to check+ + |
+
232 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
233 | + + ++ + | ++ + | + + + + +
+
+ function maxUsersToCheck() external view returns (uint128 _maxUsersToCheck);+ + |
+
234 | + + ++ + | ++ + | + + + + ++ + + + | +
235 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
236 | + + ++ + | ++ + | + + + + +
+
+ * @notice The total bonded tokens for a user+ + |
+
237 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The user address+ + |
+
238 | + + ++ + | ++ + | + + + + +
+
+ * @return _totalBonded The total bonded tokens for a user+ + |
+
239 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
240 | + + ++ + | ++ + | + + + + +
+
+ function totalBonded(address _user) external view returns (uint256 _totalBonded);+ + |
+
241 | + + ++ + | ++ + | + + + + ++ + + + | +
242 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
243 | + + ++ + | ++ + | + + + + +
+
+ * @notice The bound amount of tokens for a user in a request+ + |
+
244 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The user address+ + |
+
245 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
246 | + + ++ + | ++ + | + + + + +
+
+ * @return _amount The amount of tokens bonded+ + |
+
247 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
248 | + + ++ + | ++ + | + + + + +
+
+ function bondedForRequest(address _user, bytes32 _requestId) external view returns (uint256 _amount);+ + |
+
249 | + + ++ + | ++ + | + + + + ++ + + + | +
250 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
251 | + + ++ + | ++ + | + + + + +
+
+ * @notice The total pledged tokens for a user+ + |
+
252 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
253 | + + ++ + | ++ + | + + + + +
+
+ * @return _amount The total pledged tokens for a user+ + |
+
254 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
255 | + + ++ + | ++ + | + + + + +
+
+ function pledges(bytes32 _disputeId) external view returns (uint256 _amount);+ + |
+
256 | + + ++ + | ++ + | + + + + ++ + + + | +
257 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
258 | + + ++ + | ++ + | + + + + +
+
+ * @notice The escalation result of a dispute+ + |
+
259 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
260 | + + ++ + | ++ + | + + + + +
+
+ * @return _requestId The ID of the request+ + |
+
261 | + + ++ + | ++ + | + + + + +
+
+ * @return _amountPerPledger The amount of token paid to each of the winning pledgers+ + |
+
262 | + + ++ + | ++ + | + + + + +
+
+ * @return _bondSize The size of the bond required for bond escalation+ + |
+
263 | + + ++ + | ++ + | + + + + +
+
+ * @return _bondEscalationModule The address of the bond escalation module that was used+ + |
+
264 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
265 | + + ++ + | ++ + | + + + + +
+
+ function escalationResults(bytes32 _disputeId)+ + |
+
266 | + + ++ + | ++ + | + + + + +
+
+ external+ + |
+
267 | + + ++ + | ++ + | + + + + +
+
+ view+ + |
+
268 | + + ++ + | ++ + | + + + + +
+
+ returns (+ + |
+
269 | + + ++ + | ++ + | + + + + +
+
+ bytes32 _requestId,+ + |
+
270 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger,+ + |
+
271 | + + ++ + | ++ + | + + + + +
+
+ uint256 _bondSize,+ + |
+
272 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule _bondEscalationModule+ + |
+
273 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
274 | + + ++ + | ++ + | + + + + ++ + + + | +
275 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
276 | + + ++ + | ++ + | + + + + +
+
+ * @notice The escalation result of a dispute+ + |
+
277 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
278 | + + ++ + | ++ + | + + + + +
+
+ * @return _escalationResult The escalation result+ + |
+
279 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
280 | + + ++ + | ++ + | + + + + +
+
+ function getEscalationResult(bytes32 _disputeId) external view returns (EscalationResult memory _escalationResult);+ + |
+
281 | + + ++ + | ++ + | + + + + ++ + + + | +
282 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
283 | + + ++ + | ++ + | + + + + +
+
+ * @notice The claim status of a user for a pledge+ + |
+
284 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request+ + |
+
285 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger The user address+ + |
+
286 | + + ++ + | ++ + | + + + + +
+
+ * @return _claimed True if the user claimed their pledge+ + |
+
287 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
288 | + + ++ + | ++ + | + + + + +
+
+ function pledgerClaimed(bytes32 _requestId, address _pledger) external view returns (bool _claimed);+ + |
+
289 | + + ++ + | ++ + | + + + + ++ + + + | +
290 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
291 | + + ++ + | ++ + | + + + + +
+
+ * @notice Checks whether an address is an authorized caller+ + |
+
292 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
293 | + + ++ + | ++ + | + + + + +
+
+ * @param _caller The address to check+ + |
+
294 | + + ++ + | ++ + | + + + + +
+
+ * @return _authorized True if the address is authorized, false otherwise+ + |
+
295 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
296 | + + ++ + | ++ + | + + + + +
+
+ function authorizedCallers(address _caller) external returns (bool _authorized);+ + |
+
297 | + + ++ + | ++ + | + + + + ++ + + + | +
298 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
299 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the approved modules for bonding tokens+ + |
+
300 | + + ++ + | ++ + | + + + + +
+
+ * @param _user The address of the user+ + |
+
301 | + + ++ + | ++ + | + + + + +
+
+ * @return _approvedModules The approved modules for bonding tokens+ + |
+
302 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
303 | + + ++ + | ++ + | + + + + +
+
+ function approvedModules(address _user) external view returns (address[] memory _approvedModules);+ + |
+
304 | + + ++ + | ++ + | + + + + ++ + + + | +
305 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
306 | + + ++ + | ++ + | + + + + +
+
+ * @notice Returns the available balance to claim for a specific dispute+ + |
+
307 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
308 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The id of the dispute to get the balance+ + |
+
309 | + + ++ + | ++ + | + + + + +
+
+ * @return _balance The balance of the dispute+ + |
+
310 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
311 | + + ++ + | ++ + | + + + + +
+
+ function disputeBalance(bytes32 _disputeId) external returns (uint256 _balance);+ + |
+
312 | + + ++ + | ++ + | + + + + ++ + + + | +
313 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
314 | + + ++ + | ++ + | + + + + +
+
+ LOGIC+ + |
+
315 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
316 | + + ++ + | ++ + | + + + + ++ + + + | +
317 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
318 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a user to approve a module for bonding tokens+ + |
+
319 | + + ++ + | ++ + | + + + + +
+
+ * @param _module The address of the module to be approved+ + |
+
320 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
321 | + + ++ + | ++ + | + + + + +
+
+ function approveModule(address _module) external;+ + |
+
322 | + + ++ + | ++ + | + + + + ++ + + + | +
323 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
324 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a user to revoke a module's approval for bonding tokens+ + |
+
325 | + + ++ + | ++ + | + + + + +
+
+ * @param _module The address of the module to be revoked+ + |
+
326 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
327 | + + ++ + | ++ + | + + + + +
+
+ function revokeModule(address _module) external;+ + |
+
328 | + + ++ + | ++ + | + + + + ++ + + + | +
329 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
330 | + + ++ + | ++ + | + + + + +
+
+ * @notice Pledges the given amount of token to the provided dispute ID of the provided request ID+ + |
+
331 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger Address of the pledger+ + |
+
332 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The bond-escalated request+ + |
+
333 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The bond-escalated dispute+ + |
+
334 | + + ++ + | ++ + | + + + + +
+
+ * @param _token Address of the token being paid as a reward for winning the bond escalation+ + |
+
335 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount Amount of GRT to pledge+ + |
+
336 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
337 | + + ++ + | ++ + | + + + + +
+
+ function pledge(+ + |
+
338 | + + ++ + | ++ + | + + + + +
+
+ address _pledger,+ + |
+
339 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
340 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
341 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _token,+ + |
+
342 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount+ + |
+
343 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
344 | + + ++ + | ++ + | + + + + ++ + + + | +
345 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
346 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
347 | + + ++ + | ++ + | + + + + +
+
+ * @notice Updates the accounting of the given dispute to reflect the result of the bond escalation+ + |
+
348 | + + ++ + | ++ + | + + + + +
+
+ * @param _request The bond-escalated request+ + |
+
349 | + + ++ + | ++ + | + + + + +
+
+ * @param _dispute The bond-escalated dispute+ + |
+
350 | + + ++ + | ++ + | + + + + +
+
+ * @param _token Address of the token being paid as a reward for winning the bond escalation+ + |
+
351 | + + ++ + | ++ + | + + + + +
+
+ * @param _amountPerPledger Amount of GRT to be rewarded to each of the winning pledgers+ + |
+
352 | + + ++ + | ++ + | + + + + +
+
+ * @param _winningPledgersLength Amount of pledges that won the dispute+ + |
+
353 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
354 | + + ++ + | ++ + | + + + + +
+
+ function onSettleBondEscalation(+ + |
+
355 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request calldata _request,+ + |
+
356 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute calldata _dispute,+ + |
+
357 | + + ++ + | ++ + | + + + + +
+
+ IERC20 _token,+ + |
+
358 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger,+ + |
+
359 | + + ++ + | ++ + | + + + + +
+
+ uint256 _winningPledgersLength+ + |
+
360 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
361 | + + ++ + | ++ + | + + + + ++ + + + | +
362 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
363 | + + ++ + | ++ + | + + + + +
+
+ * @notice Claims the reward for the pledger the given dispute+ + |
+
364 | + + ++ + | ++ + | + + + + +
+
+ * @dev After the established thawing period the losing pledgers can withdraw their stake from Horizon.+ + |
+
365 | + + ++ + | ++ + | + + + + +
+
+ * Rewards should be claimed before that period ends to ensure that funds are available.+ + |
+
366 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the bond-escalated dispute+ + |
+
367 | + + ++ + | ++ + | + + + + +
+
+ * @param _pledger Address of the pledger to claim the rewards+ + |
+
368 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
369 | + + ++ + | ++ + | + + + + +
+
+ function claimEscalationReward(bytes32 _disputeId, address _pledger) external;+ + |
+
370 | + + ++ + | ++ + | + + + + ++ + + + | +
371 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
372 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a allowed module to transfer bonded tokens from one user to another+ + |
+
373 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request handling the user's tokens+ + |
+
374 | + + ++ + | ++ + | + + + + +
+
+ * @param _payer The address of the user paying the tokens+ + |
+
375 | + + ++ + | ++ + | + + + + +
+
+ * @param _receiver The address of the user receiving the tokens+ + |
+
376 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being transferred+ + |
+
377 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT being transferred+ + |
+
378 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
379 | + + ++ + | ++ + | + + + + +
+
+ function pay(bytes32 _requestId, address _payer, address _receiver, IERC20 _token, uint256 _amount) external;+ + |
+
380 | + + ++ + | ++ + | + + + + ++ + + + | +
381 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
382 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows an allowed module to bond a user's tokens for a request+ + |
+
383 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user to bond tokens for+ + |
+
384 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request the user is bonding for+ + |
+
385 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being bonded+ + |
+
386 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT to bond+ + |
+
387 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
388 | + + ++ + | ++ + | + + + + +
+
+ function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;+ + |
+
389 | + + ++ + | ++ + | + + + + ++ + + + | +
390 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
391 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a valid module to bond a user's tokens for a request+ + |
+
392 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user to bond tokens for+ + |
+
393 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request the user is bonding for+ + |
+
394 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being bonded+ + |
+
395 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT to bond+ + |
+
396 | + + ++ + | ++ + | + + + + +
+
+ * @param _sender The address starting the propose call on the Oracle+ + |
+
397 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
398 | + + ++ + | ++ + | + + + + +
+
+ function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount, address _sender) external;+ + |
+
399 | + + ++ + | ++ + | + + + + ++ + + + | +
400 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
401 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a valid module to release a user's tokens+ + |
+
402 | + + ++ + | ++ + | + + + + +
+
+ * @param _bonder The address of the user to release tokens for+ + |
+
403 | + + ++ + | ++ + | + + + + +
+
+ * @param _requestId The ID of the request where the tokens were bonded+ + |
+
404 | + + ++ + | ++ + | + + + + +
+
+ * @param _token The address of the token being released+ + |
+
405 | + + ++ + | ++ + | + + + + +
+
+ * @param _amount The amount of GRT to release+ + |
+
406 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
407 | + + ++ + | ++ + | + + + + +
+
+ function release(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;+ + |
+
408 | + + ++ + | ++ + | + + + + ++ + + + | +
409 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
410 | + + ++ + | ++ + | + + + + +
+
+ * @notice Allows a anyone to slash a number of users for a dispute+ + |
+
411 | + + ++ + | ++ + | + + + + +
+
+ * @dev After the established thawing period the losing pledgers can withdraw their stake from Horizon.+ + |
+
412 | + + ++ + | ++ + | + + + + +
+
+ * Users should be slashed before that period ends to ensure that funds are available.+ + |
+
413 | + + ++ + | ++ + | + + + + +
+
+ * @param _disputeId The ID of the dispute+ + |
+
414 | + + ++ + | ++ + | + + + + +
+
+ * @param _usersToSlash The number of users to slash+ + |
+
415 | + + ++ + | ++ + | + + + + +
+
+ * @param _maxUsersToCheck The maximum number of users to check before finishing the slashing+ + |
+
416 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
417 | + + ++ + | ++ + | + + + + +
+
+ function slash(bytes32 _disputeId, uint256 _usersToSlash, uint256 _maxUsersToCheck) external;+ + |
+
418 | + + ++ + | ++ + | + + + + ++ + + + | +
419 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
420 | + + ++ + | ++ + | + + + + +
+
+ * @notice Sets the maximum users to check+ + |
+
421 | + + ++ + | ++ + | + + + + +
+
+ * @param _maxUsersToCheck The new value of max users to check+ + |
+
422 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
423 | + + ++ + | ++ + | + + + + +
+
+ function setMaxUsersToCheck(uint128 _maxUsersToCheck) external;+ + |
+
424 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
425 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ interface IEpochManager {+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ /*///////////////////////////////////////////////////////////////+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ FUNCTIONS+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ //////////////////////////////////////////////////////////////*/+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ function currentEpoch() external view returns (uint256 _currentEpoch);+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: GPL-3.0+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ interface IHorizonStaking {+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ * @notice Gets the details of a provision.+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ * @param serviceProvider The address of the service provider.+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ * @param verifier The address of the verifier.+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ * @return The provision details.+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ function getProvision(address serviceProvider, address verifier) external view returns (Provision memory);+ + |
+
12 | + + ++ + | ++ + | + + + + ++ + + + | +
13 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ * @notice Deposit tokens on the staking contract.+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ * @dev Pulls tokens from the caller.+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ * - `_tokens` cannot be zero.+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ * - Caller must have previously approved this contract to pull tokens from their balance.+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {StakeDeposited} event.+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ * @param tokens Amount of tokens to stake+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ function stake(uint256 tokens) external;+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ * @notice Provision stake to a verifier. The tokens will be locked with a thawing period+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ * and will be slashable by the verifier. This is the main mechanism to provision stake to a data+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ * service, where the data service is the verifier.+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ * This function can be called by the service provider or by an operator authorized by the provider+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ * for this specific verifier.+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ * @dev Requirements:+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ * - `tokens` cannot be zero and must be over the data service minimum required.+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ * - Provision parameters must be within the range allowed by the verifier (`maxVerifierCut` and `thawingPeriod`)+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ * - The `serviceProvider` must have enough idle stake to cover the tokens to provision.+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {ProvisionCreated} event.+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ * @param serviceProvider The service provider address+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ * @param verifier The verifier address for which the tokens are provisioned (who will be able to slash the tokens)+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ * @param tokens The amount of tokens that will be locked and slashable+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ * @param maxVerifierCut The maximum cut, expressed in PPM, that a verifier can transfer instead of burning when slashing+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ * @param thawingPeriod The period in seconds that the tokens will be thawing before they can be removed from the provision+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ function provision(+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ address serviceProvider,+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ address verifier,+ + |
+
49 | + + ++ + | ++ + | + + + + +
+
+ uint256 tokens,+ + |
+
50 | + + ++ + | ++ + | + + + + +
+
+ uint32 maxVerifierCut,+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ uint64 thawingPeriod+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ ) external;+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ * @notice Adds tokens from the service provider's idle stake to a provision+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ * @dev+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ * Requirements:+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ * - The `serviceProvider` must have previously provisioned stake to `verifier`.+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ * - `tokens` cannot be zero.+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ * - The `serviceProvider` must have enough idle stake to cover the tokens to add.+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {ProvisionIncreased} event.+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ * @param serviceProvider The service provider address+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ * @param verifier The verifier address+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ * @param tokens The amount of tokens to add to the provision+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ function addToProvision(address serviceProvider, address verifier, uint256 tokens) external;+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ struct Provision {+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ // Service provider tokens in the provision (does not include delegated tokens)+ + |
+
73 | + + ++ + | ++ + | + + + + +
+
+ uint256 tokens;+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ // Service provider tokens that are being thawed (and will stop being slashable soon)+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ uint256 tokensThawing;+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ // Shares representing the thawing tokens+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ uint256 sharesThawing;+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ // Max amount that can be taken by the verifier when slashing, expressed in parts-per-million of the amount slashed+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ uint32 maxVerifierCut;+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ // Time, in seconds, tokens must thaw before being withdrawn+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ uint64 thawingPeriod;+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ // Timestamp when the provision was created+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ uint64 createdAt;+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ // Pending value for `maxVerifierCut`. Verifier needs to accept it before it becomes active.+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ uint32 maxVerifierCutPending;+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ // Pending value for `thawingPeriod`. Verifier needs to accept it before it becomes active.+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ uint64 thawingPeriodPending;+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
89 | + + ++ + | ++ + | + + + + ++ + + + | +
90 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ * @notice Start thawing tokens to remove them from a provision.+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ * This function can be called by the service provider or by an operator authorized by the provider+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ * for this specific verifier.+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
95 | + + ++ + | ++ + | + + + + +
+
+ * Note that removing tokens from a provision is a two step process:+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ * - First the tokens are thawed using this function.+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ * - Then after the thawing period, the tokens are removed from the provision using {deprovision}+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ * or {reprovision}.+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ * @dev Requirements:+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ * - The provision must have enough tokens available to thaw.+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ * - `tokens` cannot be zero.+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ * Emits {ProvisionThawed} and {ThawRequestCreated} events.+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ * @param serviceProvider The service provider address+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ * @param verifier The verifier address for which the tokens are provisioned+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ * @param tokens The amount of tokens to thaw+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ * @return The ID of the thaw request+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ function thaw(address serviceProvider, address verifier, uint256 tokens) external returns (bytes32);+ + |
+
112 | + + ++ + | ++ + | + + + + ++ + + + | +
113 | + + ++ + | ++ + | + + + + +
+
+ /**+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ * @notice Slash a service provider. This can only be called by a verifier to which+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ * the provider has provisioned stake, and up to the amount of tokens they have provisioned.+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ * If the service provider's stake is not enough, the associated delegation pool might be slashed+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ * depending on the value of the global delegation slashing flag.+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ * Part of the slashed tokens are sent to the `verifierDestination` as a reward.+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ * @dev Requirements:+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ * - `tokens` must be less than or equal to the amount of tokens provisioned by the service provider.+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ * - `tokensVerifier` must be less than the provision's tokens times the provision's maximum verifier cut.+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {ProvisionSlashed} and {VerifierTokensSent} events.+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ * Emits a {DelegationSlashed} or {DelegationSlashingSkipped} event depending on the global delegation slashing+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ * flag.+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ *+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ * @param serviceProvider The service provider to slash+ + |
+
130 | + + ++ + | ++ + | + + + + +
+
+ * @param tokens The amount of tokens to slash+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ * @param tokensVerifier The amount of tokens to transfer instead of burning+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ * @param verifierDestination The address to transfer the verifier cut to+ + |
+
133 | + + ++ + | ++ + | + + + + +
+
+ */+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ function slash(address serviceProvider, uint256 tokens, uint256 tokensVerifier, address verifierDestination) external;+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
136 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 1 (100.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {PropertyParent} from './properties/PropertyParent.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ contract FuzzTest is PropertyParent {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function test_debug() public {+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ assert(true);+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +57 / 58 (98.3%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {ValidatorLib} from '@defi-wonderland/prophet-core/solidity/libraries/ValidatorLib.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ BondEscalationModule,+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ } from '@defi-wonderland/prophet-modules/solidity/contracts/modules/dispute/BondEscalationModule.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ ArbitratorModule,+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ } from '@defi-wonderland/prophet-modules/solidity/contracts/modules/resolution/ArbitratorModule.sol';+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ BondedResponseModule,+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ } from '@defi-wonderland/prophet-modules/solidity/contracts/modules/response/BondedResponseModule.sol';+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol';+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ import {IAccountingExtension} from+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IAccountingExtension.sol';+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ import {IBondEscalationAccounting} from+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IBondEscalationAccounting.sol';+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ import {IArbitrable, IArbitratorModule, ICouncilArbitrator, IOracle} from 'interfaces/ICouncilArbitrator.sol';+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ import {Utils} from './helpers/Utils.t.sol';+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ import {IEBOFinalityModule} from 'interfaces/IEBOFinalityModule.sol';+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol';+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ import {IEpochManager} from 'interfaces/external/IEpochManager.sol';+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol';+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ import {FuzzERC20, IERC20} from './helpers/FuzzERC20.sol';+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle, Oracle} from '@defi-wonderland/prophet-core/solidity/contracts/Oracle.sol';+ + |
+
38 | + + ++ + | ++ + | + + + + ++ + + + | +
39 | + + ++ + | ++ + | + + + + +
+
+ import {BondEscalationModule} from+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/contracts/modules/dispute/BondEscalationModule.sol';+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ import {BondedResponseModule} from+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ '@defi-wonderland/prophet-modules/solidity/contracts/modules/response/BondedResponseModule.sol';+ + |
+
43 | + + ++ + | ++ + | + + + + ++ + + + | +
44 | + + ++ + | ++ + | + + + + +
+
+ import {Arbitrable} from 'contracts/Arbitrable.sol';+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ import {CouncilArbitrator} from 'contracts/CouncilArbitrator.sol';+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ import {EBOFinalityModule} from 'contracts/EBOFinalityModule.sol';+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ import {EBORequestCreator, IEBORequestCreator} from 'contracts/EBORequestCreator.sol';+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ import {EBORequestModule} from 'contracts/EBORequestModule.sol';+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ import {HorizonAccountingExtension} from 'contracts/HorizonAccountingExtension.sol';+ + |
+
51 | + + ++ + | ++ + | + + + + ++ + + + | +
52 | + + ++ + | ++ + | + + + + +
+
+ import {MockEpochManager} from './helpers/MockEpochManager.t.sol';+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ import {MockHorizonStaking} from './helpers/MockHorizonStaking.t.sol';+ + |
+
54 | + + ++ + | ++ + | + + + + ++ + + + | +
55 | + + ++ + | ++ + | + + + + +
+
+ contract Setup is Utils {+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ // Core contracts+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ Oracle internal oracle;+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ EBORequestCreator internal eboRequestCreator;+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ EBORequestModule internal eboRequestModule;+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ BondedResponseModule internal bondedResponseModule;+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ BondEscalationModule internal bondEscalationModule;+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ CouncilArbitrator internal councilArbitrator;+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ EBOFinalityModule internal eboFinalityModule;+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ Arbitrable internal arbitrable;+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ HorizonAccountingExtension internal horizonAccountingExtension;+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ ArbitratorModule internal arbitratorModule;+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ // External contracts (mocked)+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ IHorizonStaking internal horizonStaking;+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ IERC20 internal GRT;+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ IEpochManager internal epochManager;+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ // Constants+ + |
+
74 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 internal constant START_EPOCH = 1000;+ + |
+
75 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint64 internal constant MIN_THAWING_PERIOD = 1 days;+ + |
+
76 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint128 internal constant INITIAL_MAX_USERS_TO_CHECK = 10;+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ uint32 internal constant MAX_VERIFIER_CUT = 1_000_000;+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ uint256 internal constant PAYMENT_AMOUNT = 0 ether;+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant RESPONSE_BOND_SIZE = 0.5 ether;+ + |
+
82 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant RESPONSE_DEADLINE = 5 days;+ + |
+
83 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant RESPONSE_DISPUTE_WINDOW = 1 weeks;+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant DISPUTE_BOND_SIZE = 0.3 ether;+ + |
+
86 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant MAX_NB_ESCALATION = 2;+ + |
+
87 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant DISPUTE_DEADLINE = 10 days;+ + |
+
88 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant TYING_BUFFER = 3 days;+ + |
+
89 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ uint256 internal constant DISPUTE_DISPUTE_WINDOW = 2 weeks;+ + |
+
90 | + + ++ + | ++ + | + + + + ++ + + + | +
91 | + + ++ + | ++ + | + + + + +
+
+ constructor() {+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ // Deploy mock contracts+ + |
+
93 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ GRT = IERC20(address(new FuzzERC20()));+ + |
+
94 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ epochManager = IEpochManager(address(new MockEpochManager(START_EPOCH)));+ + |
+
95 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonStaking = IHorizonStaking(address(new MockHorizonStaking(GRT)));+ + |
+
96 | + + ++ + | ++ + | + + + + ++ + + + | +
97 | + + ++ + | ++ + | + + + + +
+
+ // Deploy core contracts+ + |
+
98 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ arbitrable = new Arbitrable(+ + |
+
99 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(this), // Initial arbitrator+ + |
+
100 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(this) // Initial council+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
102 | + + ++ + | ++ + | + + + + ++ + + + | +
103 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ oracle = new Oracle();+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestModule = new EBORequestModule(+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ oracle,+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ EBORequestCreator(address(0)), //eboRequestCreator will be set after creation+ + |
+
108 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ arbitrable+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
110 | + + ++ + | ++ + | + + + + ++ + + + | +
111 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bondedResponseModule = new BondedResponseModule(oracle);+ + |
+
112 | + + ++ + | ++ + | + + + + ++ + + + | +
113 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bondEscalationModule = new BondEscalationModule(oracle);+ + |
+
114 | + + ++ + | ++ + | + + + + ++ + + + | +
115 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ arbitratorModule = new ArbitratorModule(oracle);+ + |
+
116 | + + ++ + | ++ + | + + + + ++ + + + | +
117 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ councilArbitrator = new CouncilArbitrator(arbitratorModule, arbitrable);+ + |
+
118 | + + ++ + | ++ + | + + + + ++ + + + | +
119 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboFinalityModule = new EBOFinalityModule(+ + |
+
120 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ oracle,+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ EBORequestCreator(address(0)), // Will be set after creation+ + |
+
122 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ arbitrable+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
124 | + + ++ + | ++ + | + + + + ++ + + + | +
125 | + + ++ + | ++ + | + + + + +
+
+ // Set up accounting extension+ + |
+
126 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address[] memory authorizedCallers = new address[](1);+ + |
+
127 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ authorizedCallers[0] = address(bondEscalationModule);+ + |
+
128 | + + ++ + | ++ + | + + + + ++ + + + | +
129 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonAccountingExtension = new HorizonAccountingExtension(+ + |
+
130 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonStaking, oracle, GRT, arbitrable, MIN_THAWING_PERIOD, INITIAL_MAX_USERS_TO_CHECK, authorizedCallers+ + |
+
131 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
132 | + + ++ + | ++ + | + + + + ++ + + + | +
133 | + + ++ + | ++ + | + + + + +
+
+ // Create EBO request creator with initial parameters+ + |
+
134 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory initialRequest = IOracle.Request({+ + |
+
135 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ requestModule: address(eboRequestModule),+ + |
+
136 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ responseModule: address(bondedResponseModule),+ + |
+
137 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ disputeModule: address(bondEscalationModule),+ + |
+
138 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ resolutionModule: address(arbitratorModule),+ + |
+
139 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ finalityModule: address(eboFinalityModule),+ + |
+
140 | + + ++ + | ++ + | + + + + +
+
+ requester: address(0), // Will be set to eboRequestCreator's address+ + |
+
141 | + + ++ + | ++ + | + + + + +
+
+ requestModuleData: '',+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ responseModuleData: '',+ + |
+
143 | + + ++ + | ++ + | + + + + +
+
+ disputeModuleData: '',+ + |
+
144 | + + ++ + | ++ + | + + + + +
+
+ resolutionModuleData: '',+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ finalityModuleData: '',+ + |
+
146 | + + ++ + | ++ + | + + + + +
+
+ nonce: 0+ + |
+
147 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
148 | + + ++ + | ++ + | + + + + ++ + + + | +
149 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator = new EBORequestCreator(oracle, epochManager, arbitrable, initialRequest);+ + |
+
150 | + + ++ + | ++ + | + + + + ++ + + + | +
151 | + + ++ + | ++ + | + + + + +
+
+ // Initialize modules with eboRequestCreator+ + |
+
152 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestModule.addEBORequestCreator(eboRequestCreator);+ + |
+
153 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboFinalityModule.addEBORequestCreator(eboRequestCreator);+ + |
+
154 | + + ++ + | ++ + | + + + + ++ + + + | +
155 | + + ++ + | ++ + | + + + + +
+
+ // Set up module permissions+ + |
+
156 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonAccountingExtension.approveModule(address(bondedResponseModule));+ + |
+
157 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonAccountingExtension.approveModule(address(bondEscalationModule));+ + |
+
158 | + + ++ + | ++ + | + + + + ++ + + + | +
159 | + + ++ + | ++ + | + + + + +
+
+ // Set up initial chain IDs+ + |
+
160 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.addChain('mainnet');+ + |
+
161 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.addChain('optimism');+ + |
+
162 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.addChain('arbitrum');+ + |
+
163 | + + ++ + | ++ + | + + + + ++ + + + | +
164 | + + ++ + | ++ + | + + + + +
+
+ // Set up initial module parameters+ + |
+
165 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ _setupModuleParameters();+ + |
+
166 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
167 | + + ++ + | ++ + | + + + + ++ + + + | +
168 | + + ++ + | ++ + | + + + + +
+
+ function _setupModuleParameters() internal {+ + |
+
169 | + + ++ + | ++ + | + + + + +
+
+ // Set up request module parameters+ + |
+
170 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ IEBORequestModule.RequestParameters memory requestParams = IEBORequestModule.RequestParameters({+ + |
+
171 | + + ++ + | ++ + | + + + + +
+
+ epoch: START_EPOCH,+ + |
+
172 | + + ++ + | ++ + | + + + + +
+
+ chainId: 'mainnet',+ + |
+
173 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ accountingExtension: IAccountingExtension(address(horizonAccountingExtension)),+ + |
+
174 | + + ++ + | ++ + | + + + + +
+
+ paymentAmount: PAYMENT_AMOUNT+ + |
+
175 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
176 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.setRequestModuleData(address(eboRequestModule), requestParams);+ + |
+
177 | + + ++ + | ++ + | + + + + ++ + + + | +
178 | + + ++ + | ++ + | + + + + +
+
+ // Set up response module parameters+ + |
+
179 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule.RequestParameters memory responseParams = IBondedResponseModule.RequestParameters({+ + |
+
180 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ accountingExtension: IAccountingExtension(address(horizonAccountingExtension)),+ + |
+
181 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bondToken: GRT,+ + |
+
182 | + + ++ + | ++ + | + + + + +
+
+ bondSize: RESPONSE_BOND_SIZE,+ + |
+
183 | + + ++ + | ++ + | + + + + +
+
+ deadline: RESPONSE_DEADLINE,+ + |
+
184 | + + ++ + | ++ + | + + + + +
+
+ disputeWindow: RESPONSE_DISPUTE_WINDOW+ + |
+
185 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
186 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.setResponseModuleData(address(bondedResponseModule), responseParams);+ + |
+
187 | + + ++ + | ++ + | + + + + ++ + + + | +
188 | + + ++ + | ++ + | + + + + +
+
+ // Set up dispute module parameters+ + |
+
189 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule.RequestParameters memory disputeParams = IBondEscalationModule.RequestParameters({+ + |
+
190 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ accountingExtension: IBondEscalationAccounting(address(horizonAccountingExtension)),+ + |
+
191 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bondToken: GRT,+ + |
+
192 | + + ++ + | ++ + | + + + + +
+
+ bondSize: DISPUTE_BOND_SIZE,+ + |
+
193 | + + ++ + | ++ + | + + + + +
+
+ maxNumberOfEscalations: MAX_NB_ESCALATION,+ + |
+
194 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationDeadline: DISPUTE_DEADLINE,+ + |
+
195 | + + ++ + | ++ + | + + + + +
+
+ tyingBuffer: TYING_BUFFER,+ + |
+
196 | + + ++ + | ++ + | + + + + +
+
+ disputeWindow: DISPUTE_DISPUTE_WINDOW+ + |
+
197 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
198 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.setDisputeModuleData(address(bondEscalationModule), disputeParams);+ + |
+
199 | + + ++ + | ++ + | + + + + ++ + + + | +
200 | + + ++ + | ++ + | + + + + +
+
+ // Set up resolution module parameters+ + |
+
201 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule.RequestParameters memory resolutionParams =+ + |
+
202 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ IArbitratorModule.RequestParameters({arbitrator: address(councilArbitrator)});+ + |
+
203 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.setResolutionModuleData(address(arbitratorModule), resolutionParams);+ + |
+
204 | + + ++ + | ++ + | + + + + ++ + + + | +
205 | + + ++ + | ++ + | + + + + +
+
+ // Set finality module+ + |
+
206 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboRequestCreator.setFinalityModuleData(address(eboFinalityModule));+ + |
+
207 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
208 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
209 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +7 / 20 (35.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import /*{} from*/ '../Setup.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {Actors} from '../helpers/Actors.t.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ // Base handler with tracking logic+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ contract BaseHandler is Setup, Actors {+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ // Track all created request IDs+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] internal _ghost_requests;+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ // Track request details+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => IOracle.Request) internal _ghost_requestData;+ + |
+
14 | + + ++ + | ++ + | + + + + ++ + + + | +
15 | + + ++ + | ++ + | + + + + +
+
+ // Track responses for requests+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => bytes32) internal _ghost_activeResponses; // requestId => responseId+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => IOracle.Response) internal _ghost_responseData;+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => bool) internal _ghost_finalizedResponses;+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ // Track disputes+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => bytes32[]) internal _ghost_disputes; // requestId => disputeIds+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => IOracle.Dispute) internal _ghost_disputeData;+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => IOracle.DisputeStatus) internal _ghost_disputeStatuses;+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ // Track which requests came from EBORequestCreator+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ mapping(bytes32 => bool) internal _ghost_validRequests;+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ // Track chain IDs used per epoch to prevent duplicates+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ mapping(uint256 => mapping(string => bool)) internal _ghost_epochChainIds;+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ // Track bonds and pledges+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ mapping(address => mapping(bytes32 => uint256)) internal _ghost_bonds;+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ mapping(address => mapping(bytes32 => uint256)) internal _ghost_pledgesFor;+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ mapping(address => mapping(bytes32 => uint256)) internal _ghost_pledgesAgainst;+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | ++ + | + + + + +
+
+ // Helper functions+ + |
+
37 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function _boundEpoch(uint256 _epoch) internal view returns (uint256) {+ + |
+
38 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return bound(_epoch, START_EPOCH, START_EPOCH + 1000);+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ function _boundAmount(uint256 _amount) internal pure returns (uint256) {+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ return bound(_amount, 1, 1_000_000e18);+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ function _boundBlockNumber(uint256 _blockNumber) internal view returns (uint256) {+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ return bound(_blockNumber, block.number - 1000, block.number);+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
48 | + + ++ + | ++ + | + + + + ++ + + + | +
49 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function _generateChainId(uint256 _seed) internal pure returns (string memory) {+ + |
+
50 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ string[3] memory chains = ['mainnet', 'optimism', 'arbitrum'];+ + |
+
51 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return chains[_seed % 3];+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ function _getRandomRequest(uint256 _seed) internal view returns (bytes32) {+ + |
+
55 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_ghost_requests.length == 0) return bytes32(0);+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ return _ghost_requests[_seed % _ghost_requests.length];+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ function _getRandomActiveResponse(bytes32 _requestId) internal view returns (IOracle.Response memory) {+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = _ghost_activeResponses[_requestId];+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ return _ghost_responseData[responseId];+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ function _getRandomDispute(bytes32 _requestId, uint256 _seed) internal view returns (IOracle.Dispute memory) {+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] storage disputes = _ghost_disputes[_requestId];+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ if (disputes.length == 0) {+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ return IOracle.Dispute(address(0), address(0), bytes32(0), 0);+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = disputes[_seed % disputes.length];+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ return _ghost_disputeData[disputeId];+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ // Events to track state changes+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ event RequestCreated(bytes32 indexed requestId, uint256 epoch, string chainId);+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ event ResponseProposed(bytes32 indexed requestId, bytes32 indexed responseId);+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ event DisputeCreated(bytes32 indexed requestId, bytes32 indexed responseId, bytes32 indexed disputeId);+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ event ResponseFinalized(bytes32 indexed requestId, bytes32 indexed responseId);+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ event DisputeResolved(bytes32 indexed disputeId, IOracle.DisputeStatus status);+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +7 / 8 (87.5%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerArbitrable is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handleValidateArbitrator(uint256 _actorSeed) external {+ + |
+
8 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address caller = _pickActor(_actorSeed);+ + |
+
9 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ arbitrable.validateArbitrator(caller);+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ function handleSetArbitrator(uint256 _actorSeed) external {+ + |
+
13 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address newArbitrator = _pickActor(_actorSeed);+ + |
+
14 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ arbitrable.setArbitrator(newArbitrator);+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ function handleSetPendingCouncil(uint256 _actorSeed) external {+ + |
+
18 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address pendingCouncil = _pickActor(_actorSeed);+ + |
+
19 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ arbitrable.setPendingCouncil(pendingCouncil);+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ function handleConfirmCouncil() external {+ + |
+
23 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ arbitrable.confirmCouncil();+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +10 / 49 (20.4%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IOracle} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerBondEscalationModule is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handleDisputeResponseBondEscalationModule(uint256 _requestSeed, uint256 _actorSeed) external {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = _ghost_activeResponses[requestId];+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ if (responseId == bytes32(0)) return;+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[responseId];+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_finalizedResponses[responseId]) return;+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ // Create dispute data+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ address disputer = _pickActor(_actorSeed);+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ uint256 bond = _boundAmount(1e18);+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute =+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute({disputer: disputer, proposer: msg.sender, responseId: responseId, requestId: requestId});+ + |
+
23 | + + ++ + | ++ + | + + + + ++ + + + | +
24 | + + ++ + | ++ + | + + + + +
+
+ // Submit dispute+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationModule.disputeResponse(_ghost_requestData[requestId], response, dispute);+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ // Track dispute+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputes[requestId].push(disputeId);+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputeData[disputeId] = dispute;+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ _ghost_bonds[disputer][requestId] = bond;+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputeStatuses[disputeId] = IOracle.DisputeStatus.Escalated;+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeCreated(requestId, responseId, disputeId);+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ function handleOnDisputeStatusChange(uint256 _requestSeed, uint256 _disputeIndex) external {+ + |
+
38 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
39 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
43 | + + ++ + | ++ + | + + + + ++ + + + | +
44 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationModule.onDisputeStatusChange(+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ disputeId, _ghost_requestData[requestId], _ghost_responseData[dispute.responseId], dispute+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ function handlePledgeForDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external {+ + |
+
51 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
52 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
56 | + + ++ + | ++ + | + + + + ++ + + + | +
57 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return;+ + |
+
58 | + + ++ + | ++ + | + + + + ++ + + + | +
59 | + + ++ + | ++ + | + + + + +
+
+ address pledger = _pickActor(_actorSeed);+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationModule.pledgeForDispute(_ghost_requestData[requestId], dispute);+ + |
+
61 | + + ++ + | ++ + | + + + + ++ + + + | +
62 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ _ghost_pledgesFor[pledger][disputeId] += _boundAmount(1e18);+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ function handlePledgeAgainstDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external {+ + |
+
67 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
68 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
69 | + + ++ + | ++ + | + + + + ++ + + + | +
70 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return;+ + |
+
74 | + + ++ + | ++ + | + + + + ++ + + + | +
75 | + + ++ + | ++ + | + + + + +
+
+ address pledger = _pickActor(_actorSeed);+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationModule.pledgeAgainstDispute(_ghost_requestData[requestId], dispute);+ + |
+
77 | + + ++ + | ++ + | + + + + ++ + + + | +
78 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ _ghost_pledgesAgainst[pledger][disputeId] += _boundAmount(1e18);+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
81 | + + ++ + | ++ + | + + + + ++ + + + | +
82 | + + ++ + | ++ + | + + + + +
+
+ function handleSettleBondEscalation(uint256 _requestSeed, uint256 _disputeIndex) external {+ + |
+
83 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
84 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
85 | + + ++ + | ++ + | + + + + ++ + + + | +
86 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[dispute.responseId];+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ bondEscalationModule.settleBondEscalation(_ghost_requestData[requestId], response, dispute);+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
93 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +6 / 28 (21.4%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IOracle} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerBondedResponseModule is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handlePropose(uint256 _requestSeed, uint256 _blockNumber, uint256 _actorSeed) external {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_activeResponses[requestId] != bytes32(0)) return; // Only one active response at a time+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ // Create response data+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ address proposer = _pickActor(_actorSeed);+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ _blockNumber = _boundBlockNumber(_blockNumber);+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory request = _ghost_requestData[requestId];+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response =+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response({requestId: requestId, response: abi.encode(_blockNumber), proposer: proposer});+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ // Submit response+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ bondedResponseModule.propose(request, response, proposer);+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ // Track response+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = keccak256(abi.encode(response));+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ _ghost_activeResponses[requestId] = responseId;+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ _ghost_responseData[responseId] = response;+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseProposed(requestId, responseId);+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ function handleFinalizeRequestResponseModule(uint256 _requestSeed) external {+ + |
+
32 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
33 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = _ghost_activeResponses[requestId];+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ if (responseId == bytes32(0)) return;+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[responseId];+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_finalizedResponses[responseId]) return;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ bondedResponseModule.finalizeRequest(_ghost_requestData[requestId], response, response.proposer);+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ _ghost_finalizedResponses[responseId] = true;+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseFinalized(requestId, responseId);+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ function handleReleaseUnutilizedResponse(uint256 _requestSeed) external {+ + |
+
48 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
49 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _getRandomActiveResponse(requestId);+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ if (response.requestId == bytes32(0)) return;+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ bondedResponseModule.releaseUnutilizedResponse(_ghost_requestData[requestId], response);+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +4 / 17 (23.5%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IOracle} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerCouncilArbitrator is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handleResolve(uint256 _requestSeed, uint256 _disputeIndex) external {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[dispute.responseId];+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ councilArbitrator.resolve(_ghost_requestData[requestId], response, dispute);+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
18 | + + ++ + | ++ + | + + + + +
+
+ function handleArbitrateDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _statusSeed) external {+ + |
+
19 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
20 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ // Generate a valid dispute status (NoResolution, Won, Lost)+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus status = IOracle.DisputeStatus(+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ bound(_statusSeed, uint8(IOracle.DisputeStatus.NoResolution), uint8(IOracle.DisputeStatus.Lost))+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ councilArbitrator.arbitrateDispute(disputeId, status);+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputeStatuses[disputeId] = status;+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeResolved(disputeId, status);+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
38 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +7 / 19 (36.8%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IEBORequestCreator, IOracle} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerEBOFinalityModule is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handleFinalizeRequestFinalityModule(uint256 _requestSeed) external {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = _ghost_activeResponses[requestId];+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ if (responseId == bytes32(0)) return;+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[responseId];+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ eboFinalityModule.finalizeRequest(_ghost_requestData[requestId], response, response.proposer);+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
18 | + + ++ + | ++ + | + + + + +
+
+ function handleAmendEpoch(+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ uint256 _epoch,+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ uint256[] calldata _chainIdSeeds,+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ uint256[] calldata _blockNumbers+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
23 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_chainIdSeeds.length != _blockNumbers.length) return;+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ _epoch = _boundEpoch(_epoch);+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ string[] memory chainIds = new string[](_chainIdSeeds.length);+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ uint256[] memory blockNums = new uint256[](_blockNumbers.length);+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 i = 0; i < _chainIdSeeds.length; i++) {+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ chainIds[i] = _generateChainId(_chainIdSeeds[i]);+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ blockNums[i] = _boundBlockNumber(_blockNumbers[i]);+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
34 | + + ++ + | ++ + | + + + + +
+
+ eboFinalityModule.amendEpoch(_epoch, chainIds, blockNums);+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ function handleAddEBORequestCreatorFinalityModule(uint256 _actorSeed) external {+ + |
+
38 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address creator = _pickActor(_actorSeed);+ + |
+
39 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ eboFinalityModule.addEBORequestCreator(IEBORequestCreator(creator));+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
41 | + + ++ + | ++ + | + + + + ++ + + + | +
42 | + + ++ + | ++ + | + + + + +
+
+ function handleRemoveEBORequestCreatorFinalityModule(uint256 _actorSeed) external {+ + |
+
43 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address creator = _pickActor(_actorSeed);+ + |
+
44 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboFinalityModule.removeEBORequestCreator(IEBORequestCreator(creator));+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +20 / 28 (71.4%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ BaseHandler,+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule,+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule,+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule,+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule,+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ IEpochManager,+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ IOracle+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ } from './BaseHandler.t.sol';+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerEBORequestCreator is BaseHandler {+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ function handleCreateRequest(uint256 _epoch, uint256 _chainIdSeed) external {+ + |
+
16 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ _epoch = _boundEpoch(_epoch);+ + |
+
17 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ string memory chainId = _generateChainId(_chainIdSeed);+ + |
+
18 | + + ++ + | ++ + | + + + + ++ + + + | +
19 | + + ++ + | ++ + | + + + + +
+
+ // Prevent duplicate chainId for same epoch+ + |
+
20 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (_ghost_epochChainIds[_epoch][chainId]) return;+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ // Create request via EBORequestCreator+ + |
+
23 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.createRequest(_epoch, chainId);+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ // Get current request data+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory requestData = eboRequestCreator.getRequestData();+ + |
+
27 | + + ++ + | ++ + | + + + + ++ + + + | +
28 | + + ++ + | ++ + | + + + + +
+
+ // Calculate request ID using same logic as Oracle+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ bytes32 requestId = keccak256(abi.encode(requestData));+ + |
+
30 | + + ++ + | ++ + | + + + + ++ + + + | +
31 | + + ++ + | ++ + | + + + + +
+
+ // Track the request+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ _ghost_requests.push(requestId);+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ _ghost_requestData[requestId] = requestData;+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ _ghost_validRequests[requestId] = true;+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ _ghost_epochChainIds[_epoch][chainId] = true;+ + |
+
36 | + + ++ + | ++ + | + + + + ++ + + + | +
37 | + + ++ + | ++ + | + + + + +
+
+ emit RequestCreated(requestId, _epoch, chainId);+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
39 | + + ++ + | ++ + | + + + + ++ + + + | +
40 | + + ++ + | ++ + | + + + + +
+
+ function handleAddChain(uint256 _chainIdSeed) external {+ + |
+
41 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ string memory chainId = _generateChainId(_chainIdSeed);+ + |
+
42 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.addChain(chainId);+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + ++ + | ++ + | + + + + +
+
+ function handleRemoveChain(uint256 _chainIdSeed) external {+ + |
+
46 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ string memory chainId = _generateChainId(_chainIdSeed);+ + |
+
47 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.removeChain(chainId);+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ function handleSetRequestModuleData(+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ uint256 _actorSeed,+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ IEBORequestModule.RequestParameters calldata _params+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
54 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address module = _pickActor(_actorSeed);+ + |
+
55 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.setRequestModuleData(module, _params);+ + |
+
56 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ function handleSetResponseModuleData(+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ uint256 _actorSeed,+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ IBondedResponseModule.RequestParameters calldata _params+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
62 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address module = _pickActor(_actorSeed);+ + |
+
63 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.setResponseModuleData(module, _params);+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ function handleSetDisputeModuleData(+ + |
+
67 | + + ++ + | ++ + | + + + + +
+
+ uint256 _actorSeed,+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ IBondEscalationModule.RequestParameters calldata _params+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
70 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address module = _pickActor(_actorSeed);+ + |
+
71 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.setDisputeModuleData(module, _params);+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ function handleSetResolutionModuleData(+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ uint256 _actorSeed,+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ IArbitratorModule.RequestParameters calldata _params+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
78 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address module = _pickActor(_actorSeed);+ + |
+
79 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.setResolutionModuleData(module, _params);+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
81 | + + ++ + | ++ + | + + + + ++ + + + | +
82 | + + ++ + | ++ + | + + + + +
+
+ function handleSetFinalityModuleData(uint256 _actorSeed) external {+ + |
+
83 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address module = _pickActor(_actorSeed);+ + |
+
84 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.setFinalityModuleData(module);+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
86 | + + ++ + | ++ + | + + + + ++ + + + | +
87 | + + ++ + | ++ + | + + + + +
+
+ function handleSetEpochManager(uint256 _actorSeed) external {+ + |
+
88 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address manager = _pickActor(_actorSeed);+ + |
+
89 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.setEpochManager(IEpochManager(manager));+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
92 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +4 / 5 (80.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IEBORequestCreator} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerEBORequestModule is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handleAddEBORequestCreatorRequestModule(uint256 _actorSeed) external {+ + |
+
8 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address creator = _pickActor(_actorSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestModule.addEBORequestCreator(IEBORequestCreator(creator));+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ function handleRemoveEBORequestCreatorRequestModule(uint256 _actorSeed) external {+ + |
+
13 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address creator = _pickActor(_actorSeed);+ + |
+
14 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestModule.removeEBORequestCreator(IEBORequestCreator(creator));+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
17 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +26 / 58 (44.8%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IOracle} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerHorizonAccountingExtension is BaseHandler {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ function handleApproveModule(uint256 _actorSeed) external {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address module = _pickActor(_actorSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonAccountingExtension.approveModule(module);+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
11 | + + ++ + | ++ + | + + + + ++ + + + | +
12 | + + ++ + | ++ + | + + + + +
+
+ function handleRevokeModule(uint256 _actorSeed) external {+ + |
+
13 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address module = _pickActor(_actorSeed);+ + |
+
14 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ horizonAccountingExtension.revokeModule(module);+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ function handlePledge(uint256 _pledgerSeed, uint256 _requestSeed, uint256 _disputeIndex, uint256 _amount) external {+ + |
+
18 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address pledger = _pickActor(_pledgerSeed);+ + |
+
19 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
20 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ _amount = _boundAmount(_amount);+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.pledge(pledger, _ghost_requestData[requestId], dispute, GRT, _amount);+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ function handleOnSettleBondEscalation(+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestSeed,+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ uint256 _disputeIndex,+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amountPerPledger,+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ uint256 _winningPledgersLength+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
35 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
36 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ _amountPerPledger = _boundAmount(_amountPerPledger);+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.onSettleBondEscalation(+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ _ghost_requestData[requestId], dispute, GRT, _amountPerPledger, _winningPledgersLength+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ function handleClaimEscalationReward(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external {+ + |
+
48 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
49 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
50 | + + ++ + | ++ + | + + + + ++ + + + | +
51 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ address pledger = _pickActor(_actorSeed);+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
56 | + + ++ + | ++ + | + + + + ++ + + + | +
57 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.claimEscalationReward(disputeId, pledger);+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ function handlePay(uint256 _requestSeed, uint256 _payerSeed, uint256 _receiverSeed, uint256 _amount) external {+ + |
+
61 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
62 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
63 | + + ++ + | ++ + | + + + + ++ + + + | +
64 | + + ++ + | ++ + | + + + + +
+
+ address payer = _pickActor(_payerSeed);+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ address receiver = _pickActor(_receiverSeed);+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ _amount = _boundAmount(_amount);+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.pay(requestId, payer, receiver, GRT, _amount);+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
70 | + + ++ + | ++ + | + + + + ++ + + + | +
71 | + + ++ + | ++ + | + + + + +
+
+ function handleBond(uint256 _bonderSeed, uint256 _requestSeed, uint256 _amount) external {+ + |
+
72 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address bonder = _pickActor(_bonderSeed);+ + |
+
73 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
74 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ _amount = _boundAmount(_amount);+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.bond(bonder, requestId, GRT, _amount);+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
79 | + + ++ + | ++ + | + + + + ++ + + + | +
80 | + + ++ + | ++ + | + + + + +
+
+ function handleBondWithSender(+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ uint256 _bonderSeed,+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestSeed,+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ uint256 _amount,+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ uint256 _senderSeed+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
86 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address bonder = _pickActor(_bonderSeed);+ + |
+
87 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
88 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
89 | + + ++ + | ++ + | + + + + ++ + + + | +
90 | + + ++ + | ++ + | + + + + +
+
+ _amount = _boundAmount(_amount);+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ address sender = _pickActor(_senderSeed);+ + |
+
92 | + + ++ + | ++ + | + + + + ++ + + + | +
93 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.bond(bonder, requestId, GRT, _amount, sender);+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ function handleRelease(uint256 _bonderSeed, uint256 _requestSeed, uint256 _amount) external {+ + |
+
97 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address bonder = _pickActor(_bonderSeed);+ + |
+
98 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
99 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
100 | + + ++ + | ++ + | + + + + ++ + + + | +
101 | + + ++ + | ++ + | + + + + +
+
+ _amount = _boundAmount(_amount);+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.release(bonder, requestId, GRT, _amount);+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + ++ + | ++ + | + + + + +
+
+ function handleSlash(+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestSeed,+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ uint256 _disputeIndex,+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ uint256 _usersToSlash,+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ uint256 _maxUsersToCheck+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
111 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
112 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
113 | + + ++ + | ++ + | + + + + ++ + + + | +
114 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
116 | + + ++ + | ++ + | + + + + ++ + + + | +
117 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ _usersToSlash = bound(_usersToSlash, 1, 10);+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ _maxUsersToCheck = bound(_maxUsersToCheck, _usersToSlash, 20);+ + |
+
120 | + + ++ + | ++ + | + + + + ++ + + + | +
121 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension.slash(disputeId, _usersToSlash, _maxUsersToCheck);+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
123 | + + ++ + | ++ + | + + + + ++ + + + | +
124 | + + ++ + | ++ + | + + + + +
+
+ function handleSetMaxUsersToCheck(uint256 _maxUsers) external {+ + |
+
125 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ _maxUsers = bound(_maxUsers, 1, 100);+ + |
+
126 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ horizonAccountingExtension.setMaxUsersToCheck(uint128(_maxUsers));+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
128 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
129 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +22 / 80 (27.5%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {BaseHandler, IOracle} from './BaseHandler.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerOracle is BaseHandler {+ + |
+
7 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ function handleCreateRequest(uint256 _requestSeed, bytes32 _previousId) external returns (bytes32) {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return bytes32(0);+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ return oracle.createRequest(_ghost_requestData[requestId], _previousId);+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ function handleCreateRequests(+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ uint256[] calldata _requestSeeds,+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ bytes32[] calldata _previousIds+ + |
+
17 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ) external returns (bytes32[] memory) {+ + |
+
18 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (_requestSeeds.length != _previousIds.length) {+ + |
+
19 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return new bytes32[](0);+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request[] memory requests = new IOracle.Request[](_requestSeeds.length);+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 i = 0; i < _requestSeeds.length; i++) {+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeeds[i]);+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ if (requestId == bytes32(0)) return new bytes32[](0);+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ requests[i] = _ghost_requestData[requestId];+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ return oracle.createRequests(requests, _previousIds);+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ function handleProposeResponse(+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ uint256 _requestSeed,+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ uint256 _blockNumber,+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ uint256 _actorSeed+ + |
+
36 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ ) external returns (bytes32) {+ + |
+
37 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
38 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) {+ + |
+
39 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return bytes32(0);+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
41 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_activeResponses[requestId] != bytes32(0)) return bytes32(0);+ + |
+
42 | + + ++ + | ++ + | + + + + ++ + + + | +
43 | + + ++ + | ++ + | + + + + +
+
+ address proposer = _pickActor(_actorSeed);+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ _blockNumber = _boundBlockNumber(_blockNumber);+ + |
+
45 | + + ++ + | ++ + | + + + + ++ + + + | +
46 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Request memory request = _ghost_requestData[requestId];+ + |
+
47 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response =+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response({requestId: requestId, response: abi.encode(_blockNumber), proposer: proposer});+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = oracle.proposeResponse(request, response);+ + |
+
51 | + + ++ + | ++ + | + + + + ++ + + + | +
52 | + + ++ + | ++ + | + + + + +
+
+ // Track response+ + |
+
53 | + + ++ + | ++ + | + + + + +
+
+ _ghost_activeResponses[requestId] = responseId;+ + |
+
54 | + + ++ + | ++ + | + + + + +
+
+ _ghost_responseData[responseId] = response;+ + |
+
55 | + + ++ + | ++ + | + + + + ++ + + + | +
56 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseProposed(requestId, responseId);+ + |
+
57 | + + ++ + | ++ + | + + + + ++ + + + | +
58 | + + ++ + | ++ + | + + + + +
+
+ return responseId;+ + |
+
59 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
60 | + + ++ + | ++ + | + + + + ++ + + + | +
61 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ function handleDisputeResponseOracle(uint256 _requestSeed, uint256 _actorSeed) external returns (bytes32) {+ + |
+
62 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
63 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) {+ + |
+
64 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return bytes32(0);+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
66 | + + ++ + | ++ + | + + + + ++ + + + | +
67 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = _ghost_activeResponses[requestId];+ + |
+
68 | + + ++ + | ++ + | + + + + +
+
+ if (responseId == bytes32(0)) return bytes32(0);+ + |
+
69 | + + ++ + | ++ + | + + + + ++ + + + | +
70 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[responseId];+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_finalizedResponses[responseId]) return bytes32(0);+ + |
+
72 | + + ++ + | ++ + | + + + + ++ + + + | +
73 | + + ++ + | ++ + | + + + + +
+
+ address disputer = _pickActor(_actorSeed);+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ uint256 bond = _boundAmount(1e18);+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute =+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute({disputer: disputer, proposer: response.proposer, requestId: requestId, responseId: responseId});+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = oracle.disputeResponse(_ghost_requestData[requestId], response, dispute);+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ // Track dispute+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputes[requestId].push(disputeId);+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputeData[disputeId] = dispute;+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ _ghost_bonds[disputer][requestId] = bond;+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputeStatuses[disputeId] = IOracle.DisputeStatus.Escalated;+ + |
+
86 | + + ++ + | ++ + | + + + + ++ + + + | +
87 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeCreated(requestId, responseId, disputeId);+ + |
+
88 | + + ++ + | ++ + | + + + + ++ + + + | +
89 | + + ++ + | ++ + | + + + + +
+
+ return disputeId;+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
91 | + + ++ + | ++ + | + + + + ++ + + + | +
92 | + + ++ + | ++ + | + + + + +
+
+ function handleEscalateDispute(uint256 _requestSeed, uint256 _disputeIndex) external {+ + |
+
93 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
94 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
98 | + + ++ + | ++ + | + + + + ++ + + + | +
99 | + + ++ + | ++ + | + + + + +
+
+ if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return;+ + |
+
100 | + + ++ + | ++ + | + + + + ++ + + + | +
101 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[dispute.responseId];+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ oracle.escalateDispute(_ghost_requestData[requestId], response, dispute);+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
104 | + + ++ + | ++ + | + + + + ++ + + + | +
105 | + + ++ + | ++ + | + + + + +
+
+ function handleResolveDispute(uint256 _requestSeed, uint256 _disputeIndex) external {+ + |
+
106 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
107 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
108 | + + ++ + | ++ + | + + + + ++ + + + | +
109 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
111 | + + ++ + | ++ + | + + + + ++ + + + | +
112 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[dispute.responseId];+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ oracle.resolveDispute(_ghost_requestData[requestId], response, dispute);+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
115 | + + ++ + | ++ + | + + + + ++ + + + | +
116 | + + ++ + | ++ + | + + + + +
+
+ function handleUpdateDisputeStatus(uint256 _requestSeed, uint256 _disputeIndex, uint256 _statusSeed) external {+ + |
+
117 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
118 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
119 | + + ++ + | ++ + | + + + + ++ + + + | +
120 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ if (dispute.requestId == bytes32(0)) return;+ + |
+
122 | + + ++ + | ++ + | + + + + ++ + + + | +
123 | + + ++ + | ++ + | + + + + +
+
+ // Generate a valid dispute status (NoResolution, Won, Lost)+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ IOracle.DisputeStatus status = IOracle.DisputeStatus(+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ bound(_statusSeed, uint8(IOracle.DisputeStatus.NoResolution), uint8(IOracle.DisputeStatus.Lost))+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
127 | + + ++ + | ++ + | + + + + ++ + + + | +
128 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[dispute.responseId];+ + |
+
129 | + + ++ + | ++ + | + + + + +
+
+ oracle.updateDisputeStatus(_ghost_requestData[requestId], response, dispute, status);+ + |
+
130 | + + ++ + | ++ + | + + + + ++ + + + | +
131 | + + ++ + | ++ + | + + + + +
+
+ bytes32 disputeId = keccak256(abi.encode(dispute));+ + |
+
132 | + + ++ + | ++ + | + + + + +
+
+ _ghost_disputeStatuses[disputeId] = status;+ + |
+
133 | + + ++ + | ++ + | + + + + ++ + + + | +
134 | + + ++ + | ++ + | + + + + +
+
+ emit DisputeResolved(disputeId, status);+ + |
+
135 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
136 | + + ++ + | ++ + | + + + + ++ + + + | +
137 | + + ++ + | ++ + | + + + + +
+
+ function handleFinalize(uint256 _requestSeed) external {+ + |
+
138 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ bytes32 requestId = _getRandomRequest(_requestSeed);+ + |
+
139 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ if (requestId == bytes32(0)) return;+ + |
+
140 | + + ++ + | ++ + | + + + + ++ + + + | +
141 | + + ++ + | ++ + | + + + + +
+
+ bytes32 responseId = _ghost_activeResponses[requestId];+ + |
+
142 | + + ++ + | ++ + | + + + + +
+
+ if (responseId == bytes32(0)) return;+ + |
+
143 | + + ++ + | ++ + | + + + + ++ + + + | +
144 | + + ++ + | ++ + | + + + + +
+
+ IOracle.Response memory response = _ghost_responseData[responseId];+ + |
+
145 | + + ++ + | ++ + | + + + + +
+
+ oracle.finalize(_ghost_requestData[requestId], response);+ + |
+
146 | + + ++ + | ++ + | + + + + ++ + + + | +
147 | + + ++ + | ++ + | + + + + +
+
+ _ghost_finalizedResponses[responseId] = true;+ + |
+
148 | + + ++ + | ++ + | + + + + +
+
+ emit ResponseFinalized(requestId, responseId);+ + |
+
149 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
150 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
151 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 2 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerArbitrable} from './HandlerArbitrable.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerBondEscalationModule} from './HandlerBondEscalationModule.t.sol';+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerBondedResponseModule} from './HandlerBondedResponseModule.t.sol';+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerCouncilArbitrator} from './HandlerCouncilArbitrator.t.sol';+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerEBOFinalityModule} from './HandlerEBOFinalityModule.t.sol';+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerEBORequestCreator} from './HandlerEBORequestCreator.t.sol';+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerEBORequestModule} from './HandlerEBORequestModule.t.sol';+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerHorizonAccountingExtension} from './HandlerHorizonAccountingExtension.t.sol';+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerOracle} from './HandlerOracle.t.sol';+ + |
+
14 | + + ++ + | ++ + | + + + + ++ + + + | +
15 | + + ++ + | ++ + | + + + + +
+
+ contract HandlerParent is+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ HandlerArbitrable,+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ HandlerBondedResponseModule,+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ HandlerBondEscalationModule,+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ HandlerCouncilArbitrator,+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ HandlerEBOFinalityModule,+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ HandlerEBORequestCreator,+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ HandlerEBORequestModule,+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ HandlerHorizonAccountingExtension,+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ HandlerOracle+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ {+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ //solhint-disable no-empty-blocks+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ constructor() {}+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
29 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +12 / 13 (92.3%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: UNLICENSED+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {Utils} from './Utils.t.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract Actors is Utils {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ address[] internal _ghost_actors = [+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x10000),+ + |
+
9 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x20000),+ + |
+
10 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x30000),+ + |
+
11 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x40000),+ + |
+
12 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x50000),+ + |
+
13 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x60000),+ + |
+
14 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x70000),+ + |
+
15 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x80000),+ + |
+
16 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0x90000),+ + |
+
17 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ address(0xa0000)+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ ];+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ event ActorsLog(string);+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ function _pickActor(uint256 _seed) internal view returns (address) {+ + |
+
23 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ return _ghost_actors[_seed % _ghost_actors.length];+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 7 (14.3%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {ERC20, IERC20} from '@openzeppelin/contracts/token/ERC20/ERC20.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract FuzzERC20 is ERC20 {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ address testContract;+ + |
+
8 | + + ++ + | ++ + | + + + + ++ + + + | +
9 | + + ++ + | ++ + | + + + + +
+
+ constructor() ERC20('FuzzERC20', 'FuzzERC20') {+ + |
+
10 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ testContract = msg.sender;+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
12 | + + ++ + | ++ + | + + + + ++ + + + | +
13 | + + ++ + | ++ + | + + + + +
+
+ function transfer(address to, uint256 amount) public override returns (bool) {+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ address owner = _msgSender();+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ // FuzzTest has an infinite mint+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ if (owner == testContract) {+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ _mint(testContract, amount);+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | ++ + | + + + + +
+
+ _transfer(owner, to, amount);+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ return true;+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
24 | + + ++ + | ++ + | + + + + ++ + + + | +
25 | + + ++ + | ++ + | + + + + +
+
+ function mint(address _to, uint256 _amount) public {+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ _mint(_to, _amount);+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ function burn(address _from, uint256 _amount) public {+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ _burn(_from, _amount);+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
33 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 0 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: UNLICENSED+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ interface IStdCheats {+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ // Set block.timestamp+ + |
+
6 | + + ++ + | ++ + | + + + + +
+
+ function warp(uint256) external;+ + |
+
7 | + + ++ + | ++ + | + + + + ++ + + + | +
8 | + + ++ + | ++ + | + + + + +
+
+ // Set block.number+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ function roll(uint256) external;+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ // Set block.basefee+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ function fee(uint256) external;+ + |
+
13 | + + ++ + | ++ + | + + + + ++ + + + | +
14 | + + ++ + | ++ + | + + + + +
+
+ // Set block.difficulty and block.prevrandao+ + |
+
15 | + + ++ + | ++ + | + + + + +
+
+ function difficulty(uint256) external;+ + |
+
16 | + + ++ + | ++ + | + + + + ++ + + + | +
17 | + + ++ + | ++ + | + + + + +
+
+ // Set block.chainid+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ function chainId(uint256) external;+ + |
+
19 | + + ++ + | ++ + | + + + + ++ + + + | +
20 | + + ++ + | ++ + | + + + + +
+
+ // Sets the block.coinbase+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ function coinbase(address) external;+ + |
+
22 | + + ++ + | ++ + | + + + + ++ + + + | +
23 | + + ++ + | ++ + | + + + + +
+
+ // Loads a storage slot from an address+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ function load(address account, bytes32 slot) external returns (bytes32);+ + |
+
25 | + + ++ + | ++ + | + + + + ++ + + + | +
26 | + + ++ + | ++ + | + + + + +
+
+ // Stores a value to an address' storage slot+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ function store(address account, bytes32 slot, bytes32 value) external;+ + |
+
28 | + + ++ + | ++ + | + + + + ++ + + + | +
29 | + + ++ + | ++ + | + + + + +
+
+ // Sets the *next* call's msg.sender to be the input address+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ function prank(address) external;+ + |
+
31 | + + ++ + | ++ + | + + + + ++ + + + | +
32 | + + ++ + | ++ + | + + + + +
+
+ // Set msg.sender to the input address until the current call exits+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ function prankHere(address) external;+ + |
+
34 | + + ++ + | ++ + | + + + + ++ + + + | +
35 | + + ++ + | ++ + | + + + + +
+
+ // Sets an address' balance+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ function deal(address who, uint256 newBalance) external;+ + |
+
37 | + + ++ + | ++ + | + + + + ++ + + + | +
38 | + + ++ + | ++ + | + + + + +
+
+ // Sets an address' code+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ function etch(address who, bytes calldata code) external;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ // Signs data+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ function sign(uint256 privateKey, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s);+ + |
+
43 | + + ++ + | ++ + | + + + + ++ + + + | +
44 | + + ++ + | ++ + | + + + + +
+
+ // Computes address for a given private key+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ function addr(uint256 privateKey) external returns (address);+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ // Gets the nonce of an account+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ function getNonce(address account) external returns (uint64);+ + |
+
49 | + + ++ + | ++ + | + + + + ++ + + + | +
50 | + + ++ + | ++ + | + + + + +
+
+ // Sets the nonce of an account+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ // The new nonce must be higher than the current nonce of the account+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ function setNonce(address account, uint64 nonce) external;+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ // Performs a foreign function call via terminal+ + |
+
55 | + + ++ + | ++ + | + + + + +
+
+ function ffi(string[] calldata) external returns (bytes memory);+ + |
+
56 | + + ++ + | ++ + | + + + + ++ + + + | +
57 | + + ++ + | ++ + | + + + + +
+
+ // Take a snapshot of the current state of the EVM+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ function snapshot() external returns (uint256);+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | ++ + | + + + + +
+
+ // Revert state back to a snapshot+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ function revertTo(uint256) external returns (bool);+ + |
+
62 | + + ++ + | ++ + | + + + + ++ + + + | +
63 | + + ++ + | ++ + | + + + + +
+
+ // Convert Solidity types to strings+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ function toString(address) external returns (string memory);+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | ++ + | + + + + +
+
+ function toString(bytes calldata) external returns (string memory);+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ function toString(bytes32) external returns (string memory);+ + |
+
69 | + + ++ + | ++ + | + + + + ++ + + + | +
70 | + + ++ + | ++ + | + + + + +
+
+ function toString(bool) external returns (string memory);+ + |
+
71 | + + ++ + | ++ + | + + + + ++ + + + | +
72 | + + ++ + | ++ + | + + + + +
+
+ function toString(uint256) external returns (string memory);+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ function toString(int256) external returns (string memory);+ + |
+
75 | + + ++ + | ++ + | + + + + ++ + + + | +
76 | + + ++ + | ++ + | + + + + +
+
+ // Convert strings into Solidity types+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ function parseBytes(string memory) external returns (bytes memory);+ + |
+
78 | + + ++ + | ++ + | + + + + ++ + + + | +
79 | + + ++ + | ++ + | + + + + +
+
+ function parseBytes32(string memory) external returns (bytes32);+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ function parseAddress(string memory) external returns (address);+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ function parseUint(string memory) external returns (uint256);+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ function parseInt(string memory) external returns (int256);+ + |
+
86 | + + ++ + | ++ + | + + + + ++ + + + | +
87 | + + ++ + | ++ + | + + + + +
+
+ function parseBool(string memory) external returns (bool);+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
89 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +2 / 3 (66.7%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ contract MockEpochManager {+ + |
+
5 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 public currentEpoch;+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ constructor(uint256 _startEpoch) {+ + |
+
8 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ currentEpoch = _startEpoch;+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ function setEpoch(uint256 _epoch) external {+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ currentEpoch = _epoch;+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
14 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +1 / 7 (14.3%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol';+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ contract MockHorizonStaking {+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ IERC20 public immutable GRT;+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ mapping(address => mapping(address => IHorizonStaking.Provision)) public provisions;+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
11 | + + ++ + | ++ + | + + + + +
+
+ constructor(IERC20 _grt) {+ + |
+
12 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ GRT = _grt;+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
14 | + + ++ + | ++ + | + + + + ++ + + + | +
15 | + + ++ + | ++ + | + + + + +
+
+ function getProvision(+ + |
+
16 | + + ++ + | ++ + | + + + + +
+
+ address _serviceProvider,+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ address _verifier+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ ) external view returns (IHorizonStaking.Provision memory) {+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ return provisions[_serviceProvider][_verifier];+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
21 | + + ++ + | ++ + | + + + + ++ + + + | +
22 | + + ++ + | ++ + | + + + + +
+
+ function provision(+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ address _serviceProvider,+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ address _verifier,+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ uint256 _tokens,+ + |
+
26 | + + ++ + | ++ + | + + + + +
+
+ uint32 _maxVerifierCut,+ + |
+
27 | + + ++ + | ++ + | + + + + +
+
+ uint64 _thawingPeriod+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ ) external {+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ provisions[_serviceProvider][_verifier] = IHorizonStaking.Provision({+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ tokens: _tokens,+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ tokensThawing: 0,+ + |
+
32 | + + ++ + | ++ + | + + + + +
+
+ sharesThawing: 0,+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ maxVerifierCut: _maxVerifierCut,+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ thawingPeriod: _thawingPeriod,+ + |
+
35 | + + ++ + | ++ + | + + + + +
+
+ createdAt: uint64(block.timestamp),+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ maxVerifierCutPending: 0,+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ thawingPeriodPending: 0+ + |
+
38 | + + ++ + | ++ + | + + + + +
+
+ });+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ function slash(address, uint256, uint256 _tokensVerifier, address _verifierDestination) external {+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ GRT.transfer(_verifierDestination, _tokensVerifier);+ + |
+
43 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
44 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
45 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +21 / 32 (65.6%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity ^0.8.19;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IStdCheats} from "./IStdCheats.sol";+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ // override forge-std:+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ // - vm, avoiding unsupported cheatcode+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ // - assertEq, allowing custom message in Medusa+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ // - assertTrue, allowing custom message in Medusa+ + |
+
10 | + + ++ + | ++ + | + + + + +
+
+ // - makeAddr, bypassing the limitation of non-existing label cheatcode+ + |
+
11 | + + ++ + | ++ + | + + + + +
+
+ // etc+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ contract Utils {+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ IStdCheats internal vm =+ + |
+
14 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ IStdCheats(address(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D));+ + |
+
15 | + + ++ + | ++ + | + + + + ++ + + + | +
16 | + + ++ + | ++ + | + + + + +
+
+ event TestFailure(string reason);+ + |
+
17 | + + ++ + | ++ + | + + + + +
+
+ event AddressMade(string label, address addressGenerated);+ + |
+
18 | + + ++ + | ++ + | + + + + ++ + + + | +
19 | + + ++ + | ++ + | + + + + +
+
+ function makeAddr(string memory label) internal returns (address) {+ + |
+
20 | + + ++ + | ++ + | + + + + +
+
+ address genAddress = address(+ + |
+
21 | + + ++ + | ++ + | + + + + +
+
+ uint160(uint256(keccak256(abi.encodePacked(label))))+ + |
+
22 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ emit AddressMade(label, genAddress);+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ return genAddress;+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | ++ + | + + + + +
+
+ // same as forge-std+ + |
+
28 | + + ++ + | ++ + | + + + + +
+
+ function bound(+ + |
+
29 | + + ++ + | ++ + | + + + + +
+
+ uint256 x,+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ uint256 min,+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ uint256 max+ + |
+
32 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ ) internal pure returns (uint256 result) {+ + |
+
33 | + + ++ + | ++ + | + + + + +
+
+ //solhint-disable custom-errors+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ require(+ + |
+
35 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ min <= max,+ + |
+
36 | + + ++ + | ++ + | + + + + +
+
+ "StdUtils bound(uint256,uint256,uint256): Max is less than min."+ + |
+
37 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
38 | + + ++ + | ++ + | + + + + ++ + + + | +
39 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 UINT256_MAX = 2 ** 256 - 1;+ + |
+
40 | + + ++ + | ++ + | + + + + ++ + + + | +
41 | + + ++ + | ++ + | + + + + +
+
+ // If x is between min and max, return x directly. This is to ensure that dictionary values+ + |
+
42 | + + ++ + | ++ + | + + + + +
+
+ // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188+ + |
+
43 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (x >= min && x <= max) return x;+ + |
+
44 | + + ++ + | ++ + | + + + + ++ + + + | +
45 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 size = max - min + 1;+ + |
+
46 | + + ++ + | ++ + | + + + + ++ + + + | +
47 | + + ++ + | ++ + | + + + + +
+
+ // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side.+ + |
+
48 | + + ++ + | ++ + | + + + + +
+
+ // This helps ensure coverage of the min/max values.+ + |
+
49 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (x <= 3 && size > x) return min + x;+ + |
+
50 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) {+ + |
+
51 | + + +
+
+ √
+
+ |
+ + + | + + + + +
+
+ return max - (UINT256_MAX - x);+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | ++ + | + + + + +
+
+ // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive.+ + |
+
55 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (x > max) {+ + |
+
56 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 diff = x - max;+ + |
+
57 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ uint256 rem = diff % size;+ + |
+
58 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (rem == 0) return max;+ + |
+
59 | + + +
+
+ √
+
+ |
+
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ result = min + rem - 1;+ + |
+
60 | + + ++ + | ++ + | + + + + +
+
+ } else if (x < min) {+ + |
+
61 | + + ++ + | ++ + | + + + + +
+
+ uint256 diff = min - x;+ + |
+
62 | + + ++ + | ++ + | + + + + +
+
+ uint256 rem = diff % size;+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ if (rem == 0) return min;+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ result = max - rem + 1;+ + |
+
65 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
66 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
67 | + + ++ + | ++ + | + + + + ++ + + + | +
68 | + + ++ + | ++ + | + + + + +
+
+ // todo: convert everything to b32 (then only one implementation)+ + |
+
69 | + + ++ + | ++ + | + + + + ++ + + + | +
70 | + + ++ + | ++ + | + + + + +
+
+ function assertEq(uint256 a, uint256 b) internal {+ + |
+
71 | + + ++ + | ++ + | + + + + +
+
+ assertEq(a, b, "assertEq: a != b");+ + |
+
72 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
73 | + + ++ + | ++ + | + + + + ++ + + + | +
74 | + + ++ + | ++ + | + + + + +
+
+ function assertEq(uint256 a, uint256 b, string memory reason) internal {+ + |
+
75 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (a != b) {+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ emit TestFailure(reason);+ + |
+
77 | + + ++ + | ++ + | + + + + +
+
+ assert(false);+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
80 | + + ++ + | ++ + | + + + + ++ + + + | +
81 | + + ++ + | ++ + | + + + + +
+
+ function assertEq(address a, address b) internal {+ + |
+
82 | + + ++ + | ++ + | + + + + +
+
+ assertEq(a, b, "assertEq: a != b");+ + |
+
83 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
84 | + + ++ + | ++ + | + + + + ++ + + + | +
85 | + + ++ + | ++ + | + + + + +
+
+ function assertEq(address a, address b, string memory reason) internal {+ + |
+
86 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (a != b) {+ + |
+
87 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ emit TestFailure(reason);+ + |
+
88 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assert(false);+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
91 | + + ++ + | ++ + | + + + + ++ + + + | +
92 | + + ++ + | ++ + | + + + + +
+
+ function assertEq(bytes memory a, bytes memory b) internal {+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ assertEq(a, b, "assertEq: a != b");+ + |
+
94 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
95 | + + ++ + | ++ + | + + + + ++ + + + | +
96 | + + ++ + | ++ + | + + + + +
+
+ function assertEq(+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ bytes memory a,+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ bytes memory b,+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ string memory reason+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ ) internal {+ + |
+
101 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ if (a.length != b.length) {+ + |
+
102 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ emit TestFailure(reason);+ + |
+
103 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assert(false);+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ for (uint256 i = 0; i < a.length; i++) {+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ if (a[i] != b[i]) {+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ emit TestFailure(reason);+ + |
+
108 | + + ++ + | ++ + | + + + + +
+
+ assert(false);+ + |
+
109 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
112 | + + ++ + | ++ + | + + + + ++ + + + | +
113 | + + ++ + | ++ + | + + + + +
+
+ function assertTrue(bool a) internal {+ + |
+
114 | + + ++ + | ++ + | + + + + +
+
+ assertTrue(a, "assertTrue: !a");+ + |
+
115 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
116 | + + ++ + | ++ + | + + + + ++ + + + | +
117 | + + ++ + | ++ + | + + + + +
+
+ function assertTrue(bool a, string memory reason) internal {+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ if (!a) {+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ emit TestFailure(reason);+ + |
+
120 | + + ++ + | ++ + | + + + + +
+
+ assert(false);+ + |
+
121 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
124 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +0 / 2 (0.0%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {HandlerParent} from "../handlers/HandlerParent.t.sol";+ + |
+
5 | + + ++ + | ++ + | + + + + ++ + + + | +
6 | + + ++ + | ++ + | + + + + +
+
+ contract PropertyEbo is HandlerParent {+ + |
+
7 | + + ++ + | ++ + | + + + + +
+
+ //solhint-disable no-empty-blocks+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ constructor() {}+ + |
+
9 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
10 | + + ++ + | ++ + | + + + + ++ + + + | +
Lines covered: | +33 / 51 (64.7%) | +
---|
1 | + + ++ + | ++ + | + + + + +
+
+ // SPDX-License-Identifier: MIT+ + |
+
2 | + + ++ + | ++ + | + + + + +
+
+ pragma solidity 0.8.26;+ + |
+
3 | + + ++ + | ++ + | + + + + ++ + + + | +
4 | + + ++ + | ++ + | + + + + +
+
+ import {IOracle} from "@defi-wonderland/prophet-core/solidity/contracts/Oracle.sol";+ + |
+
5 | + + ++ + | ++ + | + + + + +
+
+ import {PropertyEbo} from "./PropertyEbo.t.sol";+ + |
+
6 | + + ++ + | ++ + | + + + + ++ + + + | +
7 | + + ++ + | ++ + | + + + + +
+
+ contract PropertyParent is PropertyEbo {+ + |
+
8 | + + ++ + | ++ + | + + + + +
+
+ function property_sanityCheck() external {+ + |
+
9 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
10 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(eboRequestCreator.ORACLE()),+ + |
+
11 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(oracle),+ + |
+
12 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong oracle address"+ + |
+
13 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
14 | + + ++ + | ++ + | + + + + ++ + + + | +
15 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
16 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(eboRequestCreator.ARBITRABLE()),+ + |
+
17 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(arbitrable),+ + |
+
18 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong arbitrable address"+ + |
+
19 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
20 | + + ++ + | ++ + | + + + + ++ + + + | +
21 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
22 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ eboRequestCreator.START_EPOCH(),+ + |
+
23 | + + ++ + | ++ + | + + + + +
+
+ START_EPOCH,+ + |
+
24 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong start epoch"+ + |
+
25 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
26 | + + ++ + | ++ + | + + + + ++ + + + | +
27 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
28 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(eboRequestCreator.epochManager()),+ + |
+
29 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(epochManager),+ + |
+
30 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong epoch manager address"+ + |
+
31 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
32 | + + ++ + | ++ + | + + + + ++ + + + | +
33 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ IOracle.Request memory initialRequestStored = eboRequestCreator+ + |
+
34 | + + ++ + | ++ + | + + + + +
+
+ .getRequestData();+ + |
+
35 | + + ++ + | ++ + | + + + + ++ + + + | +
36 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
37 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.requestModule,+ + |
+
38 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(eboRequestModule),+ + |
+
39 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong request module in initialRequest"+ + |
+
40 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
41 | + + ++ + | ++ + | + + + + ++ + + + | +
42 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
43 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.responseModule,+ + |
+
44 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(bondedResponseModule),+ + |
+
45 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong response module in initialRequest"+ + |
+
46 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
47 | + + ++ + | ++ + | + + + + ++ + + + | +
48 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
49 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.disputeModule,+ + |
+
50 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(bondEscalationModule),+ + |
+
51 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong disputeModule in initialRequest"+ + |
+
52 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
53 | + + ++ + | ++ + | + + + + ++ + + + | +
54 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
55 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.resolutionModule,+ + |
+
56 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(arbitratorModule),+ + |
+
57 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong resolutionModule in initialRequest"+ + |
+
58 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
59 | + + ++ + | ++ + | + + + + ++ + + + | +
60 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
61 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.finalityModule,+ + |
+
62 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(eboFinalityModule),+ + |
+
63 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong finalityModule in initialRequest"+ + |
+
64 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
65 | + + ++ + | ++ + | + + + + ++ + + + | +
66 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
67 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.requester,+ + |
+
68 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ address(eboRequestCreator),+ + |
+
69 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong requester in initialRequest"+ + |
+
70 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
71 | + + ++ + | ++ + | + + + + ++ + + + | +
72 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ assertEq(+ + |
+
73 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ initialRequestStored.requestModuleData,+ + |
+
74 | + + ++ + | ++ + | + + + + +
+
+ abi.encodePacked(+ + |
+
75 | + + ++ + | ++ + | + + + + +
+
+ START_EPOCH,+ + |
+
76 | + + ++ + | ++ + | + + + + +
+
+ "mainnet",+ + |
+
77 | + + ++ + | +
+
+ ⟳
+
+ |
+
+
+
+
+
+
+ horizonAccountingExtension,+ + |
+
78 | + + ++ + | ++ + | + + + + +
+
+ PAYMENT_AMOUNT+ + |
+
79 | + + ++ + | ++ + | + + + + +
+
+ ),+ + |
+
80 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong requestModuleData in initialRequest"+ + |
+
81 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
82 | + + ++ + | ++ + | + + + + ++ + + + | +
83 | + + ++ + | ++ + | + + + + +
+
+ assertEq(+ + |
+
84 | + + ++ + | ++ + | + + + + +
+
+ initialRequestStored.responseModuleData,+ + |
+
85 | + + ++ + | ++ + | + + + + +
+
+ abi.encode(+ + |
+
86 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension,+ + |
+
87 | + + ++ + | ++ + | + + + + +
+
+ GRT,+ + |
+
88 | + + ++ + | ++ + | + + + + +
+
+ RESPONSE_BOND_SIZE,+ + |
+
89 | + + ++ + | ++ + | + + + + +
+
+ RESPONSE_DEADLINE,+ + |
+
90 | + + ++ + | ++ + | + + + + +
+
+ RESPONSE_DISPUTE_WINDOW+ + |
+
91 | + + ++ + | ++ + | + + + + +
+
+ ),+ + |
+
92 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong responseModuleData module data in initialRequest"+ + |
+
93 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
94 | + + ++ + | ++ + | + + + + ++ + + + | +
95 | + + ++ + | ++ + | + + + + +
+
+ assertEq(+ + |
+
96 | + + ++ + | ++ + | + + + + +
+
+ initialRequestStored.disputeModuleData,+ + |
+
97 | + + ++ + | ++ + | + + + + +
+
+ abi.encode(+ + |
+
98 | + + ++ + | ++ + | + + + + +
+
+ horizonAccountingExtension,+ + |
+
99 | + + ++ + | ++ + | + + + + +
+
+ GRT,+ + |
+
100 | + + ++ + | ++ + | + + + + +
+
+ DISPUTE_BOND_SIZE,+ + |
+
101 | + + ++ + | ++ + | + + + + +
+
+ MAX_NB_ESCALATION,+ + |
+
102 | + + ++ + | ++ + | + + + + +
+
+ DISPUTE_DEADLINE,+ + |
+
103 | + + ++ + | ++ + | + + + + +
+
+ TYING_BUFFER,+ + |
+
104 | + + ++ + | ++ + | + + + + +
+
+ DISPUTE_DISPUTE_WINDOW+ + |
+
105 | + + ++ + | ++ + | + + + + +
+
+ ),+ + |
+
106 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong disputeModuleData in initialRequest"+ + |
+
107 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
108 | + + ++ + | ++ + | + + + + ++ + + + | +
109 | + + ++ + | ++ + | + + + + +
+
+ assertEq(+ + |
+
110 | + + ++ + | ++ + | + + + + +
+
+ initialRequestStored.resolutionModuleData,+ + |
+
111 | + + ++ + | ++ + | + + + + +
+
+ abi.encode(councilArbitrator),+ + |
+
112 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong resolutionModuleData in initialRequest"+ + |
+
113 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
114 | + + ++ + | ++ + | + + + + ++ + + + | +
115 | + + ++ + | ++ + | + + + + +
+
+ assertEq(+ + |
+
116 | + + ++ + | ++ + | + + + + +
+
+ initialRequestStored.finalityModuleData,+ + |
+
117 | + + ++ + | ++ + | + + + + +
+
+ abi.encode(eboFinalityModule),+ + |
+
118 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong finality module data in initialRequest"+ + |
+
119 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
120 | + + ++ + | ++ + | + + + + ++ + + + | +
121 | + + ++ + | ++ + | + + + + +
+
+ assertEq(+ + |
+
122 | + + ++ + | ++ + | + + + + +
+
+ initialRequestStored.nonce,+ + |
+
123 | + + ++ + | ++ + | + + + + +
+
+ 0,+ + |
+
124 | + + ++ + | ++ + | + + + + +
+
+ "prop-0: wrong nonce in initialRequest"+ + |
+
125 | + + ++ + | ++ + | + + + + +
+
+ );+ + |
+
126 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
127 | + + ++ + | ++ + | + + + + +
+
+ }+ + |
+
128 | + + ++ + | ++ + | + + + + ++ + + + | +
Files: | 65 |
---|---|
Lines: | 8454 |
Covered: | -- - - - - - - - 371 / 1371 (27.1%) - - | -
Lines covered: | -0 / 3 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule} from '../interfaces/IModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '../interfaces/IOracle.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- import {Validator} from './Validator.sol';- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- abstract contract Module is Validator, IModule {- - |
-
10 | - - -- - | -- - | - - - - -
-
- constructor(IOracle _oracle) Validator(_oracle) {}- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- /**- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is the oracle- - |
-
14 | - - -- - | -- - | - - - - -
-
- */- - |
-
15 | - - -- - | -- - | - - - - -
-
- modifier onlyOracle() {- - |
-
16 | - - -- - | -- - | - - - - -
-
- if (msg.sender != address(ORACLE)) revert Module_OnlyOracle();- - |
-
17 | - - -- - | -- - | - - - - -
-
- _;- - |
-
18 | - - -- - | -- - | - - - - -
-
- }- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
21 | - - -- - | -- - | - - - - -
-
- function finalizeRequest(- - |
-
22 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
23 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
24 | - - -- - | -- - | - - - - -
-
- address _finalizer- - |
-
25 | - - -- - | -- - | - - - - -
-
- ) external virtual onlyOracle {}- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
28 | - - -- - | -- - | - - - - -
-
- function validateParameters(bytes calldata _encodedParameters) external view virtual returns (bool _valid) {}- - |
-
29 | - - -- - | -- - | - - - - -
-
- }- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 161 (0.6%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '../interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {IDisputeModule} from '../interfaces/modules/dispute/IDisputeModule.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- import {IFinalityModule} from '../interfaces/modules/finality/IFinalityModule.sol';- - |
-
9 | - - -- - | -- - | - - - - -
-
- import {IRequestModule} from '../interfaces/modules/request/IRequestModule.sol';- - |
-
10 | - - -- - | -- - | - - - - -
-
- import {IResolutionModule} from '../interfaces/modules/resolution/IResolutionModule.sol';- - |
-
11 | - - -- - | -- - | - - - - -
-
- import {IResponseModule} from '../interfaces/modules/response/IResponseModule.sol';- - |
-
12 | - - -- - | -- - | - - - - -
-
- import {ValidatorLib} from '../libraries/ValidatorLib.sol';- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -
-
- √
-
- |
- - - | - - - - -
-
- contract Oracle is IOracle {- - |
-
15 | - - -- - | -- - | - - - - -
-
- using ValidatorLib for *;- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
18 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => uint256 _finalizedAt) public finalizedAt;- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
21 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _id => uint256 _requestCreatedAt) public requestCreatedAt;- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
24 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _id => uint256 _responseCreatedAt) public responseCreatedAt;- - |
-
25 | - - -- - | -- - | - - - - -- - - - | -
26 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
27 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _id => uint256 _disputeCreatedAt) public disputeCreatedAt;- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
30 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _responseId => bytes32 _disputeId) public disputeOf;- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
33 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => DisputeStatus _status) public disputeStatus;- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
36 | - - -- - | -- - | - - - - -
-
- mapping(uint256 _requestNumber => bytes32 _id) public nonceToRequestId;- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
39 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => bytes32 _finalizedResponseId) public finalizedResponseId;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
42 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => mapping(address _module => bool _allowed)) public allowedModule;- - |
-
43 | - - -- - | -- - | - - - - -- - - - | -
44 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
45 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => mapping(address _user => bool _isParticipant)) public isParticipant;- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- /**- - |
-
48 | - - -- - | -- - | - - - - -
-
- * @notice The list of the response ids for each request- - |
-
49 | - - -- - | -- - | - - - - -
-
- */- - |
-
50 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => bytes _responseIds) internal _responseIds;- - |
-
51 | - - -- - | -- - | - - - - -- - - - | -
52 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
53 | - - -- - | -- - | - - - - -
-
- uint256 public totalRequestCount;- - |
-
54 | - - -- - | -- - | - - - - -- - - - | -
55 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
56 | - - -- - | -- - | - - - - -
-
- function createRequest(Request calldata _request, bytes32 _ipfsHash) external returns (bytes32 _requestId) {- - |
-
57 | - - -- - | -- - | - - - - -
-
- _requestId = _createRequest(_request, _ipfsHash);- - |
-
58 | - - -- - | -- - | - - - - -
-
- }- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
61 | - - -- - | -- - | - - - - -
-
- function createRequests(- - |
-
62 | - - -- - | -- - | - - - - -
-
- Request[] calldata _requestsData,- - |
-
63 | - - -- - | -- - | - - - - -
-
- bytes32[] calldata _ipfsHashes- - |
-
64 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes32[] memory _batchRequestsIds) {- - |
-
65 | - - -- - | -- - | - - - - -
-
- uint256 _requestsAmount = _requestsData.length;- - |
-
66 | - - -- - | -- - | - - - - -
-
- _batchRequestsIds = new bytes32[](_requestsAmount);- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- for (uint256 _i = 0; _i < _requestsAmount;) {- - |
-
69 | - - -- - | -- - | - - - - -
-
- _batchRequestsIds[_i] = _createRequest(_requestsData[_i], _ipfsHashes[_i]);- - |
-
70 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
71 | - - -- - | -- - | - - - - -
-
- ++_i;- - |
-
72 | - - -- - | -- - | - - - - -
-
- }- - |
-
73 | - - -- - | -- - | - - - - -
-
- }- - |
-
74 | - - -- - | -- - | - - - - -
-
- }- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
77 | - - -- - | -- - | - - - - -
-
- function listRequestIds(uint256 _startFrom, uint256 _batchSize) external view returns (bytes32[] memory _list) {- - |
-
78 | - - -- - | -- - | - - - - -
-
- uint256 _totalRequestsCount = totalRequestCount;- - |
-
79 | - - -- - | -- - | - - - - -- - - - | -
80 | - - -- - | -- - | - - - - -
-
- // If trying to collect non-existent ids only, return empty array- - |
-
81 | - - -- - | -- - | - - - - -
-
- if (_startFrom > _totalRequestsCount) {- - |
-
82 | - - -- - | -- - | - - - - -
-
- return _list;- - |
-
83 | - - -- - | -- - | - - - - -
-
- }- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- if (_batchSize > _totalRequestsCount - _startFrom) {- - |
-
86 | - - -- - | -- - | - - - - -
-
- _batchSize = _totalRequestsCount - _startFrom;- - |
-
87 | - - -- - | -- - | - - - - -
-
- }- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- _list = new bytes32[](_batchSize);- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- uint256 _index;- - |
-
92 | - - -- - | -- - | - - - - -
-
- while (_index < _batchSize) {- - |
-
93 | - - -- - | -- - | - - - - -
-
- _list[_index] = nonceToRequestId[_startFrom + _index];- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
96 | - - -- - | -- - | - - - - -
-
- ++_index;- - |
-
97 | - - -- - | -- - | - - - - -
-
- }- - |
-
98 | - - -- - | -- - | - - - - -
-
- }- - |
-
99 | - - -- - | -- - | - - - - -
-
- }- - |
-
100 | - - -- - | -- - | - - - - -- - - - | -
101 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
102 | - - -- - | -- - | - - - - -
-
- function proposeResponse(- - |
-
103 | - - -- - | -- - | - - - - -
-
- Request calldata _request,- - |
-
104 | - - -- - | -- - | - - - - -
-
- Response calldata _response- - |
-
105 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes32 _responseId) {- - |
-
106 | - - -- - | -- - | - - - - -
-
- _responseId = ValidatorLib._validateResponse(_request, _response);- - |
-
107 | - - -- - | -- - | - - - - -- - - - | -
108 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _response.requestId;- - |
-
109 | - - -- - | -- - | - - - - -- - - - | -
110 | - - -- - | -- - | - - - - -
-
- if (requestCreatedAt[_requestId] == 0) {- - |
-
111 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidRequest();- - |
-
112 | - - -- - | -- - | - - - - -
-
- }- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- // The caller must be the proposer, unless the response is coming from a dispute module- - |
-
115 | - - -- - | -- - | - - - - -
-
- if (msg.sender != _response.proposer && msg.sender != address(_request.disputeModule)) {- - |
-
116 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidProposer();- - |
-
117 | - - -- - | -- - | - - - - -
-
- }- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -- - | -- - | - - - - -
-
- // Can't propose the same response twice- - |
-
120 | - - -- - | -- - | - - - - -
-
- if (responseCreatedAt[_responseId] != 0) {- - |
-
121 | - - -- - | -- - | - - - - -
-
- revert Oracle_ResponseAlreadyProposed();- - |
-
122 | - - -- - | -- - | - - - - -
-
- }- - |
-
123 | - - -- - | -- - | - - - - -- - - - | -
124 | - - -- - | -- - | - - - - -
-
- if (finalizedAt[_requestId] != 0) {- - |
-
125 | - - -- - | -- - | - - - - -
-
- revert Oracle_AlreadyFinalized(_requestId);- - |
-
126 | - - -- - | -- - | - - - - -
-
- }- - |
-
127 | - - -- - | -- - | - - - - -
-
- isParticipant[_requestId][_response.proposer] = true;- - |
-
128 | - - -- - | -- - | - - - - -
-
- IResponseModule(_request.responseModule).propose(_request, _response, msg.sender);- - |
-
129 | - - -- - | -- - | - - - - -
-
- _responseIds[_requestId] = abi.encodePacked(_responseIds[_requestId], _responseId);- - |
-
130 | - - -- - | -- - | - - - - -
-
- responseCreatedAt[_responseId] = block.timestamp;- - |
-
131 | - - -- - | -- - | - - - - -- - - - | -
132 | - - -- - | -- - | - - - - -
-
- emit ResponseProposed(_requestId, _responseId, _response);- - |
-
133 | - - -- - | -- - | - - - - -
-
- }- - |
-
134 | - - -- - | -- - | - - - - -- - - - | -
135 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
136 | - - -- - | -- - | - - - - -
-
- function disputeResponse(- - |
-
137 | - - -- - | -- - | - - - - -
-
- Request calldata _request,- - |
-
138 | - - -- - | -- - | - - - - -
-
- Response calldata _response,- - |
-
139 | - - -- - | -- - | - - - - -
-
- Dispute calldata _dispute- - |
-
140 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes32 _disputeId) {- - |
-
141 | - - -- - | -- - | - - - - -
-
- bytes32 _responseId;- - |
-
142 | - - -- - | -- - | - - - - -
-
- (_responseId, _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);- - |
-
143 | - - -- - | -- - | - - - - -- - - - | -
144 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _dispute.requestId;- - |
-
145 | - - -- - | -- - | - - - - -- - - - | -
146 | - - -- - | -- - | - - - - -
-
- if (responseCreatedAt[_responseId] == 0) {- - |
-
147 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidResponse();- - |
-
148 | - - -- - | -- - | - - - - -
-
- }- - |
-
149 | - - -- - | -- - | - - - - -- - - - | -
150 | - - -- - | -- - | - - - - -
-
- if (_dispute.proposer != _response.proposer) {- - |
-
151 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidProposer();- - |
-
152 | - - -- - | -- - | - - - - -
-
- }- - |
-
153 | - - -- - | -- - | - - - - -- - - - | -
154 | - - -- - | -- - | - - - - -
-
- if (_dispute.disputer != msg.sender) {- - |
-
155 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDisputer();- - |
-
156 | - - -- - | -- - | - - - - -
-
- }- - |
-
157 | - - -- - | -- - | - - - - -- - - - | -
158 | - - -- - | -- - | - - - - -
-
- if (finalizedAt[_requestId] != 0) {- - |
-
159 | - - -- - | -- - | - - - - -
-
- revert Oracle_AlreadyFinalized(_requestId);- - |
-
160 | - - -- - | -- - | - - - - -
-
- }- - |
-
161 | - - -- - | -- - | - - - - -- - - - | -
162 | - - -- - | -- - | - - - - -
-
- if (disputeOf[_responseId] != bytes32(0)) {- - |
-
163 | - - -- - | -- - | - - - - -
-
- revert Oracle_ResponseAlreadyDisputed(_responseId);- - |
-
164 | - - -- - | -- - | - - - - -
-
- }- - |
-
165 | - - -- - | -- - | - - - - -
-
- isParticipant[_requestId][msg.sender] = true;- - |
-
166 | - - -- - | -- - | - - - - -
-
- disputeStatus[_disputeId] = DisputeStatus.Active;- - |
-
167 | - - -- - | -- - | - - - - -
-
- disputeOf[_responseId] = _disputeId;- - |
-
168 | - - -- - | -- - | - - - - -
-
- disputeCreatedAt[_disputeId] = block.timestamp;- - |
-
169 | - - -- - | -- - | - - - - -- - - - | -
170 | - - -- - | -- - | - - - - -
-
- IDisputeModule(_request.disputeModule).disputeResponse(_request, _response, _dispute);- - |
-
171 | - - -- - | -- - | - - - - -- - - - | -
172 | - - -- - | -- - | - - - - -
-
- emit ResponseDisputed(_responseId, _disputeId, _dispute);- - |
-
173 | - - -- - | -- - | - - - - -
-
- }- - |
-
174 | - - -- - | -- - | - - - - -- - - - | -
175 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
176 | - - -- - | -- - | - - - - -
-
- function escalateDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external {- - |
-
177 | - - -- - | -- - | - - - - -
-
- (bytes32 _responseId, bytes32 _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);- - |
-
178 | - - -- - | -- - | - - - - -- - - - | -
179 | - - -- - | -- - | - - - - -
-
- if (disputeCreatedAt[_disputeId] == 0) {- - |
-
180 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDispute();- - |
-
181 | - - -- - | -- - | - - - - -
-
- }- - |
-
182 | - - -- - | -- - | - - - - -- - - - | -
183 | - - -- - | -- - | - - - - -
-
- if (disputeOf[_responseId] != _disputeId) {- - |
-
184 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDisputeId(_disputeId);- - |
-
185 | - - -- - | -- - | - - - - -
-
- }- - |
-
186 | - - -- - | -- - | - - - - -- - - - | -
187 | - - -- - | -- - | - - - - -
-
- if (disputeStatus[_disputeId] != DisputeStatus.Active) {- - |
-
188 | - - -- - | -- - | - - - - -
-
- revert Oracle_CannotEscalate(_disputeId);- - |
-
189 | - - -- - | -- - | - - - - -
-
- }- - |
-
190 | - - -- - | -- - | - - - - -- - - - | -
191 | - - -- - | -- - | - - - - -
-
- // Change the dispute status- - |
-
192 | - - -- - | -- - | - - - - -
-
- disputeStatus[_disputeId] = DisputeStatus.Escalated;- - |
-
193 | - - -- - | -- - | - - - - -- - - - | -
194 | - - -- - | -- - | - - - - -
-
- // Notify the dispute module about the escalation- - |
-
195 | - - -- - | -- - | - - - - -
-
- IDisputeModule(_request.disputeModule).onDisputeStatusChange(_disputeId, _request, _response, _dispute);- - |
-
196 | - - -- - | -- - | - - - - -- - - - | -
197 | - - -- - | -- - | - - - - -
-
- emit DisputeEscalated(msg.sender, _disputeId, _dispute);- - |
-
198 | - - -- - | -- - | - - - - -- - - - | -
199 | - - -- - | -- - | - - - - -
-
- if (address(_request.resolutionModule) != address(0)) {- - |
-
200 | - - -- - | -- - | - - - - -
-
- // Initiate the resolution- - |
-
201 | - - -- - | -- - | - - - - -
-
- IResolutionModule(_request.resolutionModule).startResolution(_disputeId, _request, _response, _dispute);- - |
-
202 | - - -- - | -- - | - - - - -
-
- }- - |
-
203 | - - -- - | -- - | - - - - -
-
- }- - |
-
204 | - - -- - | -- - | - - - - -- - - - | -
205 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
206 | - - -- - | -- - | - - - - -
-
- function resolveDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external {- - |
-
207 | - - -- - | -- - | - - - - -
-
- (bytes32 _responseId, bytes32 _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);- - |
-
208 | - - -- - | -- - | - - - - -- - - - | -
209 | - - -- - | -- - | - - - - -
-
- if (disputeCreatedAt[_disputeId] == 0) {- - |
-
210 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDispute();- - |
-
211 | - - -- - | -- - | - - - - -
-
- }- - |
-
212 | - - -- - | -- - | - - - - -- - - - | -
213 | - - -- - | -- - | - - - - -
-
- if (disputeOf[_responseId] != _disputeId) {- - |
-
214 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDisputeId(_disputeId);- - |
-
215 | - - -- - | -- - | - - - - -
-
- }- - |
-
216 | - - -- - | -- - | - - - - -- - - - | -
217 | - - -- - | -- - | - - - - -
-
- // Revert if the dispute is not active nor escalated- - |
-
218 | - - -- - | -- - | - - - - -
-
- DisputeStatus _currentStatus = disputeStatus[_disputeId];- - |
-
219 | - - -- - | -- - | - - - - -
-
- if (_currentStatus != DisputeStatus.Active && _currentStatus != DisputeStatus.Escalated) {- - |
-
220 | - - -- - | -- - | - - - - -
-
- revert Oracle_CannotResolve(_disputeId);- - |
-
221 | - - -- - | -- - | - - - - -
-
- }- - |
-
222 | - - -- - | -- - | - - - - -- - - - | -
223 | - - -- - | -- - | - - - - -
-
- if (address(_request.resolutionModule) == address(0)) {- - |
-
224 | - - -- - | -- - | - - - - -
-
- revert Oracle_NoResolutionModule(_disputeId);- - |
-
225 | - - -- - | -- - | - - - - -
-
- }- - |
-
226 | - - -- - | -- - | - - - - -- - - - | -
227 | - - -- - | -- - | - - - - -
-
- IResolutionModule(_request.resolutionModule).resolveDispute(_disputeId, _request, _response, _dispute);- - |
-
228 | - - -- - | -- - | - - - - -- - - - | -
229 | - - -- - | -- - | - - - - -
-
- emit DisputeResolved(_disputeId, _dispute, msg.sender);- - |
-
230 | - - -- - | -- - | - - - - -
-
- }- - |
-
231 | - - -- - | -- - | - - - - -- - - - | -
232 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
233 | - - -- - | -- - | - - - - -
-
- function updateDisputeStatus(- - |
-
234 | - - -- - | -- - | - - - - -
-
- Request calldata _request,- - |
-
235 | - - -- - | -- - | - - - - -
-
- Response calldata _response,- - |
-
236 | - - -- - | -- - | - - - - -
-
- Dispute calldata _dispute,- - |
-
237 | - - -- - | -- - | - - - - -
-
- DisputeStatus _status- - |
-
238 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
239 | - - -- - | -- - | - - - - -
-
- (bytes32 _responseId, bytes32 _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);- - |
-
240 | - - -- - | -- - | - - - - -- - - - | -
241 | - - -- - | -- - | - - - - -
-
- if (disputeCreatedAt[_disputeId] == 0) {- - |
-
242 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDispute();- - |
-
243 | - - -- - | -- - | - - - - -
-
- }- - |
-
244 | - - -- - | -- - | - - - - -- - - - | -
245 | - - -- - | -- - | - - - - -
-
- if (disputeOf[_responseId] != _disputeId) {- - |
-
246 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidDisputeId(_disputeId);- - |
-
247 | - - -- - | -- - | - - - - -
-
- }- - |
-
248 | - - -- - | -- - | - - - - -- - - - | -
249 | - - -- - | -- - | - - - - -
-
- if (msg.sender != address(_request.disputeModule) && msg.sender != address(_request.resolutionModule)) {- - |
-
250 | - - -- - | -- - | - - - - -
-
- revert Oracle_NotDisputeOrResolutionModule(msg.sender);- - |
-
251 | - - -- - | -- - | - - - - -
-
- }- - |
-
252 | - - -- - | -- - | - - - - -
-
- disputeStatus[_disputeId] = _status;- - |
-
253 | - - -- - | -- - | - - - - -
-
- IDisputeModule(_request.disputeModule).onDisputeStatusChange(_disputeId, _request, _response, _dispute);- - |
-
254 | - - -- - | -- - | - - - - -- - - - | -
255 | - - -- - | -- - | - - - - -
-
- emit DisputeStatusUpdated(_disputeId, _dispute, _status);- - |
-
256 | - - -- - | -- - | - - - - -
-
- }- - |
-
257 | - - -- - | -- - | - - - - -- - - - | -
258 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
259 | - - -- - | -- - | - - - - -
-
- function getResponseIds(bytes32 _requestId) public view returns (bytes32[] memory _ids) {- - |
-
260 | - - -- - | -- - | - - - - -
-
- bytes memory _responses = _responseIds[_requestId];- - |
-
261 | - - -- - | -- - | - - - - -
-
- uint256 _length = _responses.length / 32;- - |
-
262 | - - -- - | -- - | - - - - -- - - - | -
263 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
264 | - - -- - | -- - | - - - - -
-
- for { let _i := 0 } lt(_i, _length) { _i := add(_i, 1) } {- - |
-
265 | - - -- - | -- - | - - - - -
-
- // Increase the size of the array- - |
-
266 | - - -- - | -- - | - - - - -
-
- mstore(_ids, add(mload(_ids), 1))- - |
-
267 | - - -- - | -- - | - - - - -- - - - | -
268 | - - -- - | -- - | - - - - -
-
- // Store the response id in the array- - |
-
269 | - - -- - | -- - | - - - - -
-
- mstore(add(_ids, add(32, mul(_i, 32))), mload(add(_responses, add(32, mul(_i, 32)))))- - |
-
270 | - - -- - | -- - | - - - - -
-
- }- - |
-
271 | - - -- - | -- - | - - - - -
-
- }- - |
-
272 | - - -- - | -- - | - - - - -
-
- }- - |
-
273 | - - -- - | -- - | - - - - -- - - - | -
274 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IOracle- - |
-
275 | - - -- - | -- - | - - - - -
-
- function finalize(IOracle.Request calldata _request, IOracle.Response calldata _response) external {- - |
-
276 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId;- - |
-
277 | - - -- - | -- - | - - - - -
-
- bytes32 _responseId;- - |
-
278 | - - -- - | -- - | - - - - -- - - - | -
279 | - - -- - | -- - | - - - - -
-
- // Finalizing without a response (by passing a Response with `requestId` == 0x0)- - |
-
280 | - - -- - | -- - | - - - - -
-
- if (_response.requestId == bytes32(0)) {- - |
-
281 | - - -- - | -- - | - - - - -
-
- _requestId = _finalizeWithoutResponse(_request);- - |
-
282 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
283 | - - -- - | -- - | - - - - -
-
- (_requestId, _responseId) = _finalizeWithResponse(_request, _response);- - |
-
284 | - - -- - | -- - | - - - - -
-
- }- - |
-
285 | - - -- - | -- - | - - - - -- - - - | -
286 | - - -- - | -- - | - - - - -
-
- if (finalizedAt[_requestId] != 0) {- - |
-
287 | - - -- - | -- - | - - - - -
-
- revert Oracle_AlreadyFinalized(_requestId);- - |
-
288 | - - -- - | -- - | - - - - -
-
- }- - |
-
289 | - - -- - | -- - | - - - - -- - - - | -
290 | - - -- - | -- - | - - - - -
-
- finalizedAt[_requestId] = block.timestamp;- - |
-
291 | - - -- - | -- - | - - - - -- - - - | -
292 | - - -- - | -- - | - - - - -
-
- if (address(_request.finalityModule) != address(0)) {- - |
-
293 | - - -- - | -- - | - - - - -
-
- IFinalityModule(_request.finalityModule).finalizeRequest(_request, _response, msg.sender);- - |
-
294 | - - -- - | -- - | - - - - -
-
- }- - |
-
295 | - - -- - | -- - | - - - - -- - - - | -
296 | - - -- - | -- - | - - - - -
-
- if (address(_request.resolutionModule) != address(0)) {- - |
-
297 | - - -- - | -- - | - - - - -
-
- IResolutionModule(_request.resolutionModule).finalizeRequest(_request, _response, msg.sender);- - |
-
298 | - - -- - | -- - | - - - - -
-
- }- - |
-
299 | - - -- - | -- - | - - - - -- - - - | -
300 | - - -- - | -- - | - - - - -
-
- IDisputeModule(_request.disputeModule).finalizeRequest(_request, _response, msg.sender);- - |
-
301 | - - -- - | -- - | - - - - -
-
- IResponseModule(_request.responseModule).finalizeRequest(_request, _response, msg.sender);- - |
-
302 | - - -- - | -- - | - - - - -
-
- IRequestModule(_request.requestModule).finalizeRequest(_request, _response, msg.sender);- - |
-
303 | - - -- - | -- - | - - - - -- - - - | -
304 | - - -- - | -- - | - - - - -
-
- emit OracleRequestFinalized(_requestId, _responseId, msg.sender);- - |
-
305 | - - -- - | -- - | - - - - -
-
- }- - |
-
306 | - - -- - | -- - | - - - - -- - - - | -
307 | - - -- - | -- - | - - - - -
-
- /**- - |
-
308 | - - -- - | -- - | - - - - -
-
- * @notice Finalizing a request that either does not have any responses or only has disputed responses- - |
-
309 | - - -- - | -- - | - - - - -
-
- *- - |
-
310 | - - -- - | -- - | - - - - -
-
- * @param _request The request to be finalized- - |
-
311 | - - -- - | -- - | - - - - -
-
- * @return _requestId The id of the finalized request- - |
-
312 | - - -- - | -- - | - - - - -
-
- */- - |
-
313 | - - -- - | -- - | - - - - -
-
- function _finalizeWithoutResponse(IOracle.Request calldata _request) internal view returns (bytes32 _requestId) {- - |
-
314 | - - -- - | -- - | - - - - -
-
- _requestId = ValidatorLib._getId(_request);- - |
-
315 | - - -- - | -- - | - - - - -- - - - | -
316 | - - -- - | -- - | - - - - -
-
- if (requestCreatedAt[_requestId] == 0) {- - |
-
317 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidRequest();- - |
-
318 | - - -- - | -- - | - - - - -
-
- }- - |
-
319 | - - -- - | -- - | - - - - -- - - - | -
320 | - - -- - | -- - | - - - - -
-
- bytes32[] memory _responses = getResponseIds(_requestId);- - |
-
321 | - - -- - | -- - | - - - - -
-
- uint256 _responsesAmount = _responses.length;- - |
-
322 | - - -- - | -- - | - - - - -- - - - | -
323 | - - -- - | -- - | - - - - -
-
- if (_responsesAmount != 0) {- - |
-
324 | - - -- - | -- - | - - - - -
-
- for (uint256 _i = 0; _i < _responsesAmount;) {- - |
-
325 | - - -- - | -- - | - - - - -
-
- bytes32 _responseId = _responses[_i];- - |
-
326 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = disputeOf[_responseId];- - |
-
327 | - - -- - | -- - | - - - - -
-
- DisputeStatus _status = disputeStatus[_disputeId];- - |
-
328 | - - -- - | -- - | - - - - -- - - - | -
329 | - - -- - | -- - | - - - - -
-
- // If there is an undisputed response or with a lost dispute, must finalize with it- - |
-
330 | - - -- - | -- - | - - - - -
-
- if (_status == DisputeStatus.None || _status == DisputeStatus.Lost) {- - |
-
331 | - - -- - | -- - | - - - - -
-
- revert Oracle_FinalizableResponseExists(_responseId);- - |
-
332 | - - -- - | -- - | - - - - -
-
- }- - |
-
333 | - - -- - | -- - | - - - - -- - - - | -
334 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
335 | - - -- - | -- - | - - - - -
-
- ++_i;- - |
-
336 | - - -- - | -- - | - - - - -
-
- }- - |
-
337 | - - -- - | -- - | - - - - -
-
- }- - |
-
338 | - - -- - | -- - | - - - - -
-
- }- - |
-
339 | - - -- - | -- - | - - - - -
-
- }- - |
-
340 | - - -- - | -- - | - - - - -- - - - | -
341 | - - -- - | -- - | - - - - -
-
- /**- - |
-
342 | - - -- - | -- - | - - - - -
-
- * @notice Finalizing a request with a response- - |
-
343 | - - -- - | -- - | - - - - -
-
- *- - |
-
344 | - - -- - | -- - | - - - - -
-
- * @param _request The request to be finalized- - |
-
345 | - - -- - | -- - | - - - - -
-
- * @param _response The final response- - |
-
346 | - - -- - | -- - | - - - - -
-
- * @return _requestId The id of the finalized request- - |
-
347 | - - -- - | -- - | - - - - -
-
- * @return _responseId The id of the final response- - |
-
348 | - - -- - | -- - | - - - - -
-
- */- - |
-
349 | - - -- - | -- - | - - - - -
-
- function _finalizeWithResponse(- - |
-
350 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
351 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response- - |
-
352 | - - -- - | -- - | - - - - -
-
- ) internal returns (bytes32 _requestId, bytes32 _responseId) {- - |
-
353 | - - -- - | -- - | - - - - -
-
- _responseId = ValidatorLib._validateResponse(_request, _response);- - |
-
354 | - - -- - | -- - | - - - - -- - - - | -
355 | - - -- - | -- - | - - - - -
-
- _requestId = _response.requestId;- - |
-
356 | - - -- - | -- - | - - - - -- - - - | -
357 | - - -- - | -- - | - - - - -
-
- if (responseCreatedAt[_responseId] == 0) {- - |
-
358 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidResponse();- - |
-
359 | - - -- - | -- - | - - - - -
-
- }- - |
-
360 | - - -- - | -- - | - - - - -- - - - | -
361 | - - -- - | -- - | - - - - -
-
- DisputeStatus _status = disputeStatus[disputeOf[_responseId]];- - |
-
362 | - - -- - | -- - | - - - - -- - - - | -
363 | - - -- - | -- - | - - - - -
-
- if (_status != DisputeStatus.None && _status != DisputeStatus.Lost) {- - |
-
364 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidFinalizedResponse();- - |
-
365 | - - -- - | -- - | - - - - -
-
- }- - |
-
366 | - - -- - | -- - | - - - - -- - - - | -
367 | - - -- - | -- - | - - - - -
-
- finalizedResponseId[_requestId] = _responseId;- - |
-
368 | - - -- - | -- - | - - - - -
-
- }- - |
-
369 | - - -- - | -- - | - - - - -- - - - | -
370 | - - -- - | -- - | - - - - -
-
- /**- - |
-
371 | - - -- - | -- - | - - - - -
-
- * @notice Stores a request in the contract and configures it in the modules- - |
-
372 | - - -- - | -- - | - - - - -
-
- *- - |
-
373 | - - -- - | -- - | - - - - -
-
- * @param _request The request to be created- - |
-
374 | - - -- - | -- - | - - - - -
-
- * @param _ipfsHash The hashed IPFS CID of the metadata json- - |
-
375 | - - -- - | -- - | - - - - -
-
- * @return _requestId The id of the created request- - |
-
376 | - - -- - | -- - | - - - - -
-
- */- - |
-
377 | - - -- - | -- - | - - - - -
-
- function _createRequest(Request memory _request, bytes32 _ipfsHash) internal returns (bytes32 _requestId) {- - |
-
378 | - - -- - | -- - | - - - - -
-
- uint256 _requestNonce = totalRequestCount++;- - |
-
379 | - - -- - | -- - | - - - - -- - - - | -
380 | - - -- - | -- - | - - - - -
-
- if (_request.nonce == 0) _request.nonce = uint96(_requestNonce);- - |
-
381 | - - -- - | -- - | - - - - -- - - - | -
382 | - - -- - | -- - | - - - - -
-
- if (msg.sender != _request.requester || _requestNonce != _request.nonce) {- - |
-
383 | - - -- - | -- - | - - - - -
-
- revert Oracle_InvalidRequestBody();- - |
-
384 | - - -- - | -- - | - - - - -
-
- }- - |
-
385 | - - -- - | -- - | - - - - -- - - - | -
386 | - - -- - | -- - | - - - - -
-
- _requestId = ValidatorLib._getId(_request);- - |
-
387 | - - -- - | -- - | - - - - -
-
- nonceToRequestId[_requestNonce] = _requestId;- - |
-
388 | - - -- - | -- - | - - - - -
-
- requestCreatedAt[_requestId] = block.timestamp;- - |
-
389 | - - -- - | -- - | - - - - -- - - - | -
390 | - - -- - | -- - | - - - - -
-
- allowedModule[_requestId][_request.requestModule] = true;- - |
-
391 | - - -- - | -- - | - - - - -
-
- allowedModule[_requestId][_request.responseModule] = true;- - |
-
392 | - - -- - | -- - | - - - - -
-
- allowedModule[_requestId][_request.disputeModule] = true;- - |
-
393 | - - -- - | -- - | - - - - -
-
- allowedModule[_requestId][_request.resolutionModule] = true;- - |
-
394 | - - -- - | -- - | - - - - -
-
- allowedModule[_requestId][_request.finalityModule] = true;- - |
-
395 | - - -- - | -- - | - - - - -- - - - | -
396 | - - -- - | -- - | - - - - -
-
- isParticipant[_requestId][msg.sender] = true;- - |
-
397 | - - -- - | -- - | - - - - -- - - - | -
398 | - - -- - | -- - | - - - - -
-
- IRequestModule(_request.requestModule).createRequest(_requestId, _request.requestModuleData, msg.sender);- - |
-
399 | - - -- - | -- - | - - - - -- - - - | -
400 | - - -- - | -- - | - - - - -
-
- emit RequestCreated(_requestId, _request, _ipfsHash);- - |
-
401 | - - -- - | -- - | - - - - -
-
- }- - |
-
402 | - - -- - | -- - | - - - - -
-
- }- - |
-
403 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -2 / 17 (11.8%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle, IValidator} from '../interfaces/IValidator.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {ValidatorLib} from '../libraries/ValidatorLib.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- abstract contract Validator is IValidator {- - |
-
9 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IValidator- - |
-
10 | - - -
-
- √
-
- |
- - - | - - - - -
-
- IOracle public immutable ORACLE;- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- constructor(IOracle _oracle) {- - |
-
13 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ORACLE = _oracle;- - |
-
14 | - - -- - | -- - | - - - - -
-
- }- - |
-
15 | - - -- - | -- - | - - - - -
-
- /**- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @notice Computes the id a given request- - |
-
17 | - - -- - | -- - | - - - - -
-
- *- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @return _id The id the request- - |
-
20 | - - -- - | -- - | - - - - -
-
- */- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- function _getId(IOracle.Request calldata _request) internal pure returns (bytes32 _id) {- - |
-
23 | - - -- - | -- - | - - - - -
-
- _id = ValidatorLib._getId(_request);- - |
-
24 | - - -- - | -- - | - - - - -
-
- }- - |
-
25 | - - -- - | -- - | - - - - -- - - - | -
26 | - - -- - | -- - | - - - - -
-
- /**- - |
-
27 | - - -- - | -- - | - - - - -
-
- * @notice Computes the id a given response- - |
-
28 | - - -- - | -- - | - - - - -
-
- *- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @return _id The id the response- - |
-
31 | - - -- - | -- - | - - - - -
-
- */- - |
-
32 | - - -- - | -- - | - - - - -
-
- function _getId(IOracle.Response calldata _response) internal pure returns (bytes32 _id) {- - |
-
33 | - - -- - | -- - | - - - - -
-
- _id = ValidatorLib._getId(_response);- - |
-
34 | - - -- - | -- - | - - - - -
-
- }- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- /**- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @notice Computes the id a given dispute- - |
-
38 | - - -- - | -- - | - - - - -
-
- *- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @return _id The id the dispute- - |
-
41 | - - -- - | -- - | - - - - -
-
- */- - |
-
42 | - - -- - | -- - | - - - - -
-
- function _getId(IOracle.Dispute calldata _dispute) internal pure returns (bytes32 _id) {- - |
-
43 | - - -- - | -- - | - - - - -
-
- _id = ValidatorLib._getId(_dispute);- - |
-
44 | - - -- - | -- - | - - - - -
-
- }- - |
-
45 | - - -- - | -- - | - - - - -- - - - | -
46 | - - -- - | -- - | - - - - -
-
- /**- - |
-
47 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness and existance of a request-response pair- - |
-
48 | - - -- - | -- - | - - - - -
-
- *- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
51 | - - -- - | -- - | - - - - -
-
- * @return _responseId The id the response- - |
-
52 | - - -- - | -- - | - - - - -
-
- */- - |
-
53 | - - -- - | -- - | - - - - -
-
- function _validateResponse(- - |
-
54 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
55 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response- - |
-
56 | - - -- - | -- - | - - - - -
-
- ) internal view returns (bytes32 _responseId) {- - |
-
57 | - - -- - | -- - | - - - - -
-
- _responseId = ValidatorLib._validateResponse(_request, _response);- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- if (ORACLE.responseCreatedAt(_responseId) == 0) revert Validator_InvalidResponse();- - |
-
60 | - - -- - | -- - | - - - - -
-
- }- - |
-
61 | - - -- - | -- - | - - - - -- - - - | -
62 | - - -- - | -- - | - - - - -
-
- /**- - |
-
63 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness of a request-dispute pair- - |
-
64 | - - -- - | -- - | - - - - -
-
- *- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id the dispute- - |
-
68 | - - -- - | -- - | - - - - -
-
- */- - |
-
69 | - - -- - | -- - | - - - - -
-
- function _validateDispute(- - |
-
70 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
71 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
72 | - - -- - | -- - | - - - - -
-
- ) internal view returns (bytes32 _disputeId) {- - |
-
73 | - - -- - | -- - | - - - - -
-
- _disputeId = ValidatorLib._validateDispute(_request, _dispute);- - |
-
74 | - - -- - | -- - | - - - - -- - - - | -
75 | - - -- - | -- - | - - - - -
-
- if (ORACLE.disputeCreatedAt(_disputeId) == 0) revert Validator_InvalidDispute();- - |
-
76 | - - -- - | -- - | - - - - -
-
- }- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- /**- - |
-
79 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness of a response-dispute pair- - |
-
80 | - - -- - | -- - | - - - - -
-
- *- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
82 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
83 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id the dispute- - |
-
84 | - - -- - | -- - | - - - - -
-
- */- - |
-
85 | - - -- - | -- - | - - - - -
-
- function _validateDispute(- - |
-
86 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
87 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
88 | - - -- - | -- - | - - - - -
-
- ) internal view returns (bytes32 _disputeId) {- - |
-
89 | - - -- - | -- - | - - - - -
-
- _disputeId = ValidatorLib._validateDispute(_response, _dispute);- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- if (ORACLE.disputeCreatedAt(_disputeId) == 0) revert Validator_InvalidDispute();- - |
-
92 | - - -- - | -- - | - - - - -
-
- }- - |
-
93 | - - -- - | -- - | - - - - -- - - - | -
94 | - - -- - | -- - | - - - - -
-
- /**- - |
-
95 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness of a request-response-dispute triplet- - |
-
96 | - - -- - | -- - | - - - - -
-
- *- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
98 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
99 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
100 | - - -- - | -- - | - - - - -
-
- * @return _responseId The id the response- - |
-
101 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id the dispute- - |
-
102 | - - -- - | -- - | - - - - -
-
- */- - |
-
103 | - - -- - | -- - | - - - - -
-
- function _validateResponseAndDispute(- - |
-
104 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
105 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
106 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
107 | - - -- - | -- - | - - - - -
-
- ) internal view returns (bytes32 _responseId, bytes32 _disputeId) {- - |
-
108 | - - -- - | -- - | - - - - -
-
- (_responseId, _disputeId) = ValidatorLib._validateResponseAndDispute(_request, _response, _dispute);- - |
-
109 | - - -- - | -- - | - - - - -- - - - | -
110 | - - -- - | -- - | - - - - -
-
- if (ORACLE.disputeCreatedAt(_disputeId) == 0) revert Validator_InvalidDispute();- - |
-
111 | - - -- - | -- - | - - - - -
-
- }- - |
-
112 | - - -- - | -- - | - - - - -
-
- }- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from './IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IValidator} from './IValidator.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @title Module- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @notice Abstract contract to be inherited by all modules- - |
-
10 | - - -- - | -- - | - - - - -
-
- */- - |
-
11 | - - -- - | -- - | - - - - -
-
- interface IModule is IValidator {- - |
-
12 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
13 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
14 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- /**- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a request is finalized- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request that was finalized- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @param _response The final response- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @param _finalizer The address that initiated the finalization- - |
-
21 | - - -- - | -- - | - - - - -
-
- */- - |
-
22 | - - -- - | -- - | - - - - -
-
- event RequestFinalized(bytes32 indexed _requestId, IOracle.Response _response, address _finalizer);- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
25 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
26 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- /**- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the caller is not the oracle- - |
-
30 | - - -- - | -- - | - - - - -
-
- */- - |
-
31 | - - -- - | -- - | - - - - -
-
- error Module_OnlyOracle();- - |
-
32 | - - -- - | -- - | - - - - -- - - - | -
33 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
34 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
35 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- /**- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @notice Finalizes the request- - |
-
39 | - - -- - | -- - | - - - - -
-
- *- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _request The request being finalized- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @param _response The final response- - |
-
42 | - - -- - | -- - | - - - - -
-
- * @param _finalizer The address that initiated the finalization- - |
-
43 | - - -- - | -- - | - - - - -
-
- */- - |
-
44 | - - -- - | -- - | - - - - -
-
- function finalizeRequest(- - |
-
45 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
46 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
47 | - - -- - | -- - | - - - - -
-
- address _finalizer- - |
-
48 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- /**- - |
-
51 | - - -- - | -- - | - - - - -
-
- * @notice Validates parameters prior to creating a request- - |
-
52 | - - -- - | -- - | - - - - -
-
- *- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @param _encodedParameters The encoded parameters for the request- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @return _valid Boolean indicating if the parameters are valid or not- - |
-
55 | - - -- - | -- - | - - - - -
-
- */- - |
-
56 | - - -- - | -- - | - - - - -
-
- function validateParameters(bytes calldata _encodedParameters) external view returns (bool _valid);- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- /**- - |
-
59 | - - -- - | -- - | - - - - -
-
- * @notice Returns the name of the module.- - |
-
60 | - - -- - | -- - | - - - - -
-
- *- - |
-
61 | - - -- - | -- - | - - - - -
-
- * @return _moduleName The name of the module.- - |
-
62 | - - -- - | -- - | - - - - -
-
- */- - |
-
63 | - - -- - | -- - | - - - - -
-
- function moduleName() external view returns (string memory _moduleName);- - |
-
64 | - - -- - | -- - | - - - - -
-
- }- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- /**- - |
-
5 | - - -- - | -- - | - - - - -
-
- * @title Oracle- - |
-
6 | - - -- - | -- - | - - - - -
-
- * @notice The main contract storing requests, responses and disputes, and routing the calls to the modules.- - |
-
7 | - - -- - | -- - | - - - - -
-
- */- - |
-
8 | - - -- - | -- - | - - - - -
-
- interface IOracle {- - |
-
9 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
10 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
11 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
12 | - - -- - | -- - | - - - - -- - - - | -
13 | - - -- - | -- - | - - - - -
-
- /**- - |
-
14 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a request is created- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the created request- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @param _request The request that has been created- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @param _ipfsHash The hashed IPFS CID of the metadata json- - |
-
18 | - - -- - | -- - | - - - - -
-
- */- - |
-
19 | - - -- - | -- - | - - - - -
-
- event RequestCreated(bytes32 indexed _requestId, Request _request, bytes32 _ipfsHash);- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- /**- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a response is proposed- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param _responseId The id of the proposed response- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _response The response that has been proposed- - |
-
26 | - - -- - | -- - | - - - - -
-
- */- - |
-
27 | - - -- - | -- - | - - - - -
-
- event ResponseProposed(bytes32 indexed _requestId, bytes32 indexed _responseId, Response _response);- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /**- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a response is disputed- - |
-
31 | - - -- - | -- - | - - - - -
-
- * @param _responseId The id of the response being disputed- - |
-
32 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that has been created- - |
-
34 | - - -- - | -- - | - - - - -
-
- */- - |
-
35 | - - -- - | -- - | - - - - -
-
- event ResponseDisputed(bytes32 indexed _responseId, bytes32 indexed _disputeId, Dispute _dispute);- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- /**- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a request is finalized- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request being finalized- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _responseId The id of the final response, may be empty- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @param _caller The address of the user who finalized the request- - |
-
42 | - - -- - | -- - | - - - - -
-
- */- - |
-
43 | - - -- - | -- - | - - - - -
-
- event OracleRequestFinalized(bytes32 indexed _requestId, bytes32 indexed _responseId, address indexed _caller);- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- /**- - |
-
46 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a dispute is escalated- - |
-
47 | - - -- - | -- - | - - - - -
-
- * @param _caller The address of the user who escalated the dispute- - |
-
48 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute being escalated- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being escalated- - |
-
50 | - - -- - | -- - | - - - - -
-
- */- - |
-
51 | - - -- - | -- - | - - - - -
-
- event DisputeEscalated(address indexed _caller, bytes32 indexed _disputeId, Dispute _dispute);- - |
-
52 | - - -- - | -- - | - - - - -- - - - | -
53 | - - -- - | -- - | - - - - -
-
- /**- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a dispute's status changes- - |
-
55 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being updated- - |
-
57 | - - -- - | -- - | - - - - -
-
- * @param _status The new dispute status- - |
-
58 | - - -- - | -- - | - - - - -
-
- */- - |
-
59 | - - -- - | -- - | - - - - -
-
- event DisputeStatusUpdated(bytes32 indexed _disputeId, Dispute _dispute, DisputeStatus _status);- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -- - | -- - | - - - - -
-
- /**- - |
-
62 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a dispute is resolved- - |
-
63 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute being resolved- - |
-
64 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being updated- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @param _caller The address of the user who resolved the dispute- - |
-
66 | - - -- - | -- - | - - - - -
-
- */- - |
-
67 | - - -- - | -- - | - - - - -
-
- event DisputeResolved(bytes32 indexed _disputeId, Dispute _dispute, address indexed _caller);- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
70 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
71 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- /**- - |
-
74 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when an unauthorized caller is trying to change a dispute's status- - |
-
75 | - - -- - | -- - | - - - - -
-
- * @param _caller The caller of the function- - |
-
76 | - - -- - | -- - | - - - - -
-
- */- - |
-
77 | - - -- - | -- - | - - - - -
-
- error Oracle_NotDisputeOrResolutionModule(address _caller);- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- /**- - |
-
80 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to resolve a dispute of a request without resolution module- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute being- - |
-
82 | - - -- - | -- - | - - - - -
-
- */- - |
-
83 | - - -- - | -- - | - - - - -
-
- error Oracle_NoResolutionModule(bytes32 _disputeId);- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- /**- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when disputing a response that is already disputed- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @param _responseId The id of the response being disputed- - |
-
88 | - - -- - | -- - | - - - - -
-
- */- - |
-
89 | - - -- - | -- - | - - - - -
-
- error Oracle_ResponseAlreadyDisputed(bytes32 _responseId);- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- /**- - |
-
92 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to dispute or finalize a request that is already finalized- - |
-
93 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
94 | - - -- - | -- - | - - - - -
-
- */- - |
-
95 | - - -- - | -- - | - - - - -
-
- error Oracle_AlreadyFinalized(bytes32 _requestId);- - |
-
96 | - - -- - | -- - | - - - - -- - - - | -
97 | - - -- - | -- - | - - - - -
-
- /**- - |
-
98 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to finalize a request with an invalid response- - |
-
99 | - - -- - | -- - | - - - - -
-
- */- - |
-
100 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidFinalizedResponse();- - |
-
101 | - - -- - | -- - | - - - - -- - - - | -
102 | - - -- - | -- - | - - - - -
-
- /**- - |
-
103 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to finalize a request without a response while there is, in fact, a response- - |
-
104 | - - -- - | -- - | - - - - -
-
- * @param _responseId The id of the response that would be suitable for finalization- - |
-
105 | - - -- - | -- - | - - - - -
-
- */- - |
-
106 | - - -- - | -- - | - - - - -
-
- error Oracle_FinalizableResponseExists(bytes32 _responseId);- - |
-
107 | - - -- - | -- - | - - - - -- - - - | -
108 | - - -- - | -- - | - - - - -
-
- /**- - |
-
109 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to resolve or escalate an invalid dispute- - |
-
110 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
111 | - - -- - | -- - | - - - - -
-
- */- - |
-
112 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidDisputeId(bytes32 _disputeId);- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- /**- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to escalate a dispute that's not in the active state- - |
-
116 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
117 | - - -- - | -- - | - - - - -
-
- */- - |
-
118 | - - -- - | -- - | - - - - -
-
- error Oracle_CannotEscalate(bytes32 _disputeId);- - |
-
119 | - - -- - | -- - | - - - - -- - - - | -
120 | - - -- - | -- - | - - - - -
-
- /**- - |
-
121 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to resolve a dispute that's not in the active nor escalated state- - |
-
122 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
123 | - - -- - | -- - | - - - - -
-
- */- - |
-
124 | - - -- - | -- - | - - - - -
-
- error Oracle_CannotResolve(bytes32 _disputeId);- - |
-
125 | - - -- - | -- - | - - - - -- - - - | -
126 | - - -- - | -- - | - - - - -
-
- /**- - |
-
127 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to create a request with invalid parameters- - |
-
128 | - - -- - | -- - | - - - - -
-
- */- - |
-
129 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidRequestBody();- - |
-
130 | - - -- - | -- - | - - - - -- - - - | -
131 | - - -- - | -- - | - - - - -
-
- /**- - |
-
132 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to propose a response with invalid parameters- - |
-
133 | - - -- - | -- - | - - - - -
-
- */- - |
-
134 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidResponseBody();- - |
-
135 | - - -- - | -- - | - - - - -- - - - | -
136 | - - -- - | -- - | - - - - -
-
- /**- - |
-
137 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to create a dispute with invalid parameters- - |
-
138 | - - -- - | -- - | - - - - -
-
- */- - |
-
139 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidDisputeBody();- - |
-
140 | - - -- - | -- - | - - - - -- - - - | -
141 | - - -- - | -- - | - - - - -
-
- /**- - |
-
142 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the request provided does not exist- - |
-
143 | - - -- - | -- - | - - - - -
-
- */- - |
-
144 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidRequest();- - |
-
145 | - - -- - | -- - | - - - - -- - - - | -
146 | - - -- - | -- - | - - - - -
-
- /**- - |
-
147 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the response provided does not exist- - |
-
148 | - - -- - | -- - | - - - - -
-
- */- - |
-
149 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidResponse();- - |
-
150 | - - -- - | -- - | - - - - -- - - - | -
151 | - - -- - | -- - | - - - - -
-
- /**- - |
-
152 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the dispute provided does not exist- - |
-
153 | - - -- - | -- - | - - - - -
-
- */- - |
-
154 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidDispute();- - |
-
155 | - - -- - | -- - | - - - - -- - - - | -
156 | - - -- - | -- - | - - - - -
-
- /**- - |
-
157 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when response has been already proposed- - |
-
158 | - - -- - | -- - | - - - - -
-
- */- - |
-
159 | - - -- - | -- - | - - - - -
-
- error Oracle_ResponseAlreadyProposed();- - |
-
160 | - - -- - | -- - | - - - - -- - - - | -
161 | - - -- - | -- - | - - - - -
-
- /**- - |
-
162 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the proposer is invalid- - |
-
163 | - - -- - | -- - | - - - - -
-
- */- - |
-
164 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidProposer();- - |
-
165 | - - -- - | -- - | - - - - -- - - - | -
166 | - - -- - | -- - | - - - - -
-
- /**- - |
-
167 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the disputer is invalid- - |
-
168 | - - -- - | -- - | - - - - -
-
- */- - |
-
169 | - - -- - | -- - | - - - - -
-
- error Oracle_InvalidDisputer();- - |
-
170 | - - -- - | -- - | - - - - -- - - - | -
171 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
172 | - - -- - | -- - | - - - - -
-
- ENUMS- - |
-
173 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
174 | - - -- - | -- - | - - - - -- - - - | -
175 | - - -- - | -- - | - - - - -
-
- /**- - |
-
176 | - - -- - | -- - | - - - - -
-
- * @notice All available statuses a dispute can have- - |
-
177 | - - -- - | -- - | - - - - -
-
- */- - |
-
178 | - - -- - | -- - | - - - - -
-
- enum DisputeStatus {- - |
-
179 | - - -- - | -- - | - - - - -
-
- None, // The dispute has not been started yet- - |
-
180 | - - -- - | -- - | - - - - -
-
- Active, // The dispute is active and can be escalated or resolved- - |
-
181 | - - -- - | -- - | - - - - -
-
- Escalated, // The dispute is being resolved by the resolution module- - |
-
182 | - - -- - | -- - | - - - - -
-
- Won, // The disputer has won the dispute- - |
-
183 | - - -- - | -- - | - - - - -
-
- Lost, // The disputer has lost the dispute- - |
-
184 | - - -- - | -- - | - - - - -
-
- NoResolution // The dispute was inconclusive- - |
-
185 | - - -- - | -- - | - - - - -- - - - | -
186 | - - -- - | -- - | - - - - -
-
- }- - |
-
187 | - - -- - | -- - | - - - - -- - - - | -
188 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
189 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
190 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
191 | - - -- - | -- - | - - - - -- - - - | -
192 | - - -- - | -- - | - - - - -
-
- /**- - |
-
193 | - - -- - | -- - | - - - - -
-
- * @notice Request as stored in the oracle- - |
-
194 | - - -- - | -- - | - - - - -
-
- * @param requestModule The address of the request module- - |
-
195 | - - -- - | -- - | - - - - -
-
- * @param responseModule The address of the response module- - |
-
196 | - - -- - | -- - | - - - - -
-
- * @param disputeModule The address of the dispute module- - |
-
197 | - - -- - | -- - | - - - - -
-
- * @param resolutionModule The address of the resolution module- - |
-
198 | - - -- - | -- - | - - - - -
-
- * @param finalityModule The address of the finality module- - |
-
199 | - - -- - | -- - | - - - - -
-
- * @param requestModuleData The parameters for the request module- - |
-
200 | - - -- - | -- - | - - - - -
-
- * @param responseModuleData The parameters for the response module- - |
-
201 | - - -- - | -- - | - - - - -
-
- * @param disputeModuleData The parameters for the dispute module- - |
-
202 | - - -- - | -- - | - - - - -
-
- * @param resolutionModuleData The parameters for the resolution module- - |
-
203 | - - -- - | -- - | - - - - -
-
- * @param finalityModuleData The parameters for the finality module- - |
-
204 | - - -- - | -- - | - - - - -
-
- * @param requester The address of the user who created the request- - |
-
205 | - - -- - | -- - | - - - - -
-
- * @param nonce The nonce of the request- - |
-
206 | - - -- - | -- - | - - - - -
-
- */- - |
-
207 | - - -- - | -- - | - - - - -
-
- struct Request {- - |
-
208 | - - -- - | -- - | - - - - -
-
- uint96 nonce;- - |
-
209 | - - -- - | -- - | - - - - -
-
- address requester;- - |
-
210 | - - -- - | -- - | - - - - -
-
- address requestModule;- - |
-
211 | - - -- - | -- - | - - - - -
-
- address responseModule;- - |
-
212 | - - -- - | -- - | - - - - -
-
- address disputeModule;- - |
-
213 | - - -- - | -- - | - - - - -
-
- address resolutionModule;- - |
-
214 | - - -- - | -- - | - - - - -
-
- address finalityModule;- - |
-
215 | - - -- - | -- - | - - - - -
-
- bytes requestModuleData;- - |
-
216 | - - -- - | -- - | - - - - -
-
- bytes responseModuleData;- - |
-
217 | - - -- - | -- - | - - - - -
-
- bytes disputeModuleData;- - |
-
218 | - - -- - | -- - | - - - - -
-
- bytes resolutionModuleData;- - |
-
219 | - - -- - | -- - | - - - - -
-
- bytes finalityModuleData;- - |
-
220 | - - -- - | -- - | - - - - -
-
- }- - |
-
221 | - - -- - | -- - | - - - - -- - - - | -
222 | - - -- - | -- - | - - - - -
-
- /**- - |
-
223 | - - -- - | -- - | - - - - -
-
- * @notice The response struct- - |
-
224 | - - -- - | -- - | - - - - -
-
- * @param proposer The address of the user who proposed the response- - |
-
225 | - - -- - | -- - | - - - - -
-
- * @param requestId The id of the request this response is proposed for- - |
-
226 | - - -- - | -- - | - - - - -
-
- * @param response The encoded data of the response- - |
-
227 | - - -- - | -- - | - - - - -
-
- */- - |
-
228 | - - -- - | -- - | - - - - -
-
- struct Response {- - |
-
229 | - - -- - | -- - | - - - - -
-
- address proposer;- - |
-
230 | - - -- - | -- - | - - - - -
-
- bytes32 requestId;- - |
-
231 | - - -- - | -- - | - - - - -
-
- bytes response;- - |
-
232 | - - -- - | -- - | - - - - -
-
- }- - |
-
233 | - - -- - | -- - | - - - - -- - - - | -
234 | - - -- - | -- - | - - - - -
-
- /**- - |
-
235 | - - -- - | -- - | - - - - -
-
- * @notice The dispute struct- - |
-
236 | - - -- - | -- - | - - - - -
-
- * @param disputer The address of the user who started the dispute- - |
-
237 | - - -- - | -- - | - - - - -
-
- * @param proposer The address of the user who proposed the response- - |
-
238 | - - -- - | -- - | - - - - -
-
- * @param responseId The id of the response being disputed- - |
-
239 | - - -- - | -- - | - - - - -
-
- * @param requestId The id of the request this dispute is related to- - |
-
240 | - - -- - | -- - | - - - - -
-
- */- - |
-
241 | - - -- - | -- - | - - - - -
-
- struct Dispute {- - |
-
242 | - - -- - | -- - | - - - - -
-
- address disputer;- - |
-
243 | - - -- - | -- - | - - - - -
-
- address proposer;- - |
-
244 | - - -- - | -- - | - - - - -
-
- bytes32 responseId;- - |
-
245 | - - -- - | -- - | - - - - -
-
- bytes32 requestId;- - |
-
246 | - - -- - | -- - | - - - - -
-
- }- - |
-
247 | - - -- - | -- - | - - - - -- - - - | -
248 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
249 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
250 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
251 | - - -- - | -- - | - - - - -- - - - | -
252 | - - -- - | -- - | - - - - -
-
- /**- - |
-
253 | - - -- - | -- - | - - - - -
-
- * @notice Returns the dispute id for a given response- - |
-
254 | - - -- - | -- - | - - - - -
-
- *- - |
-
255 | - - -- - | -- - | - - - - -
-
- * @param _responseId The response id to get the dispute for- - |
-
256 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id of the dispute associated with the given response- - |
-
257 | - - -- - | -- - | - - - - -
-
- */- - |
-
258 | - - -- - | -- - | - - - - -
-
- function disputeOf(bytes32 _responseId) external view returns (bytes32 _disputeId);- - |
-
259 | - - -- - | -- - | - - - - -- - - - | -
260 | - - -- - | -- - | - - - - -
-
- /**- - |
-
261 | - - -- - | -- - | - - - - -
-
- * @notice Returns the total number of requests stored in the oracle- - |
-
262 | - - -- - | -- - | - - - - -
-
- *- - |
-
263 | - - -- - | -- - | - - - - -
-
- * @return _count The total number of requests- - |
-
264 | - - -- - | -- - | - - - - -
-
- */- - |
-
265 | - - -- - | -- - | - - - - -
-
- function totalRequestCount() external view returns (uint256 _count);- - |
-
266 | - - -- - | -- - | - - - - -- - - - | -
267 | - - -- - | -- - | - - - - -
-
- /**- - |
-
268 | - - -- - | -- - | - - - - -
-
- * @notice Returns the status of a dispute- - |
-
269 | - - -- - | -- - | - - - - -
-
- *- - |
-
270 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
271 | - - -- - | -- - | - - - - -
-
- * @return _status The status of the dispute- - |
-
272 | - - -- - | -- - | - - - - -
-
- */- - |
-
273 | - - -- - | -- - | - - - - -
-
- function disputeStatus(bytes32 _disputeId) external view returns (DisputeStatus _status);- - |
-
274 | - - -- - | -- - | - - - - -- - - - | -
275 | - - -- - | -- - | - - - - -
-
- /**- - |
-
276 | - - -- - | -- - | - - - - -
-
- * @notice The id of each request in chronological order- - |
-
277 | - - -- - | -- - | - - - - -
-
- *- - |
-
278 | - - -- - | -- - | - - - - -
-
- * @param _nonce The nonce of the request- - |
-
279 | - - -- - | -- - | - - - - -
-
- * @return _requestId The id of the request- - |
-
280 | - - -- - | -- - | - - - - -
-
- */- - |
-
281 | - - -- - | -- - | - - - - -
-
- function nonceToRequestId(uint256 _nonce) external view returns (bytes32 _requestId);- - |
-
282 | - - -- - | -- - | - - - - -- - - - | -
283 | - - -- - | -- - | - - - - -
-
- /**- - |
-
284 | - - -- - | -- - | - - - - -
-
- * @notice Returns the finalized response ID for a given request- - |
-
285 | - - -- - | -- - | - - - - -
-
- *- - |
-
286 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
287 | - - -- - | -- - | - - - - -
-
- * @return _finalizedResponseId The id of the finalized response- - |
-
288 | - - -- - | -- - | - - - - -
-
- */- - |
-
289 | - - -- - | -- - | - - - - -
-
- function finalizedResponseId(bytes32 _requestId) external view returns (bytes32 _finalizedResponseId);- - |
-
290 | - - -- - | -- - | - - - - -- - - - | -
291 | - - -- - | -- - | - - - - -
-
- /**- - |
-
292 | - - -- - | -- - | - - - - -
-
- * @notice The block's timestamp at which a request was created- - |
-
293 | - - -- - | -- - | - - - - -
-
- *- - |
-
294 | - - -- - | -- - | - - - - -
-
- * @param _id The request id- - |
-
295 | - - -- - | -- - | - - - - -
-
- * @return _requestCreatedAt The block's timestamp- - |
-
296 | - - -- - | -- - | - - - - -
-
- */- - |
-
297 | - - -- - | -- - | - - - - -
-
- function requestCreatedAt(bytes32 _id) external view returns (uint256 _requestCreatedAt);- - |
-
298 | - - -- - | -- - | - - - - -- - - - | -
299 | - - -- - | -- - | - - - - -
-
- /**- - |
-
300 | - - -- - | -- - | - - - - -
-
- * @notice The block's timestamp at which a response was created- - |
-
301 | - - -- - | -- - | - - - - -
-
- *- - |
-
302 | - - -- - | -- - | - - - - -
-
- * @param _id The response id- - |
-
303 | - - -- - | -- - | - - - - -
-
- * @return _responseCreatedAt The block's timestamp- - |
-
304 | - - -- - | -- - | - - - - -
-
- */- - |
-
305 | - - -- - | -- - | - - - - -
-
- function responseCreatedAt(bytes32 _id) external view returns (uint256 _responseCreatedAt);- - |
-
306 | - - -- - | -- - | - - - - -- - - - | -
307 | - - -- - | -- - | - - - - -
-
- /**- - |
-
308 | - - -- - | -- - | - - - - -
-
- * @notice The block's timestamp at which a dispute was created- - |
-
309 | - - -- - | -- - | - - - - -
-
- *- - |
-
310 | - - -- - | -- - | - - - - -
-
- * @param _id The dispute id- - |
-
311 | - - -- - | -- - | - - - - -
-
- * @return _disputeCreatedAt The block's timestamp- - |
-
312 | - - -- - | -- - | - - - - -
-
- */- - |
-
313 | - - -- - | -- - | - - - - -
-
- function disputeCreatedAt(bytes32 _id) external view returns (uint256 _disputeCreatedAt);- - |
-
314 | - - -- - | -- - | - - - - -- - - - | -
315 | - - -- - | -- - | - - - - -
-
- /**- - |
-
316 | - - -- - | -- - | - - - - -
-
- * @notice The block's timestamp at which a request was finalized- - |
-
317 | - - -- - | -- - | - - - - -
-
- *- - |
-
318 | - - -- - | -- - | - - - - -
-
- * @param _requestId The request id- - |
-
319 | - - -- - | -- - | - - - - -
-
- * @return _finalizedAt The block's timestamp- - |
-
320 | - - -- - | -- - | - - - - -
-
- */- - |
-
321 | - - -- - | -- - | - - - - -
-
- function finalizedAt(bytes32 _requestId) external view returns (uint256 _finalizedAt);- - |
-
322 | - - -- - | -- - | - - - - -- - - - | -
323 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
324 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
325 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
326 | - - -- - | -- - | - - - - -- - - - | -
327 | - - -- - | -- - | - - - - -
-
- /**- - |
-
328 | - - -- - | -- - | - - - - -
-
- * @notice Generates the request ID and initializes the modules for the request- - |
-
329 | - - -- - | -- - | - - - - -
-
- *- - |
-
330 | - - -- - | -- - | - - - - -
-
- * @dev The modules must be real contracts following the IModule interface- - |
-
331 | - - -- - | -- - | - - - - -
-
- * @param _request The request data- - |
-
332 | - - -- - | -- - | - - - - -
-
- * @param _ipfsHash The hashed IPFS CID of the metadata json- - |
-
333 | - - -- - | -- - | - - - - -
-
- * @return _requestId The id of the request, can be used to propose a response or query results- - |
-
334 | - - -- - | -- - | - - - - -
-
- */- - |
-
335 | - - -- - | -- - | - - - - -
-
- function createRequest(Request memory _request, bytes32 _ipfsHash) external returns (bytes32 _requestId);- - |
-
336 | - - -- - | -- - | - - - - -- - - - | -
337 | - - -- - | -- - | - - - - -
-
- /**- - |
-
338 | - - -- - | -- - | - - - - -
-
- * @notice Creates multiple requests, the same way as createRequest- - |
-
339 | - - -- - | -- - | - - - - -
-
- *- - |
-
340 | - - -- - | -- - | - - - - -
-
- * @param _requestsData The array of calldata for each request- - |
-
341 | - - -- - | -- - | - - - - -
-
- * @return _batchRequestsIds The array of request IDs- - |
-
342 | - - -- - | -- - | - - - - -
-
- * @param _ipfsHashes The array of hashed IPFS CIDs of the metadata files- - |
-
343 | - - -- - | -- - | - - - - -
-
- */- - |
-
344 | - - -- - | -- - | - - - - -
-
- function createRequests(- - |
-
345 | - - -- - | -- - | - - - - -
-
- Request[] calldata _requestsData,- - |
-
346 | - - -- - | -- - | - - - - -
-
- bytes32[] calldata _ipfsHashes- - |
-
347 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes32[] memory _batchRequestsIds);- - |
-
348 | - - -- - | -- - | - - - - -- - - - | -
349 | - - -- - | -- - | - - - - -
-
- /**- - |
-
350 | - - -- - | -- - | - - - - -
-
- * @notice Returns the list of request IDs- - |
-
351 | - - -- - | -- - | - - - - -
-
- *- - |
-
352 | - - -- - | -- - | - - - - -
-
- * @param _startFrom The index to start from- - |
-
353 | - - -- - | -- - | - - - - -
-
- * @param _batchSize The number of requests to return- - |
-
354 | - - -- - | -- - | - - - - -
-
- * @return _list The list of request IDs- - |
-
355 | - - -- - | -- - | - - - - -
-
- */- - |
-
356 | - - -- - | -- - | - - - - -
-
- function listRequestIds(uint256 _startFrom, uint256 _batchSize) external view returns (bytes32[] memory _list);- - |
-
357 | - - -- - | -- - | - - - - -- - - - | -
358 | - - -- - | -- - | - - - - -
-
- /**- - |
-
359 | - - -- - | -- - | - - - - -
-
- * @notice Creates a new response for a given request- - |
-
360 | - - -- - | -- - | - - - - -
-
- *- - |
-
361 | - - -- - | -- - | - - - - -
-
- * @param _request The request to create a response for- - |
-
362 | - - -- - | -- - | - - - - -
-
- * @param _response The response data- - |
-
363 | - - -- - | -- - | - - - - -
-
- * @return _responseId The id of the created response- - |
-
364 | - - -- - | -- - | - - - - -
-
- */- - |
-
365 | - - -- - | -- - | - - - - -
-
- function proposeResponse(- - |
-
366 | - - -- - | -- - | - - - - -
-
- Request calldata _request,- - |
-
367 | - - -- - | -- - | - - - - -
-
- Response calldata _response- - |
-
368 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes32 _responseId);- - |
-
369 | - - -- - | -- - | - - - - -- - - - | -
370 | - - -- - | -- - | - - - - -
-
- /**- - |
-
371 | - - -- - | -- - | - - - - -
-
- * @notice Starts the process of disputing a response- - |
-
372 | - - -- - | -- - | - - - - -
-
- *- - |
-
373 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
374 | - - -- - | -- - | - - - - -
-
- * @param _response The response to dispute- - |
-
375 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data- - |
-
376 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id of the created dispute- - |
-
377 | - - -- - | -- - | - - - - -
-
- */- - |
-
378 | - - -- - | -- - | - - - - -
-
- function disputeResponse(- - |
-
379 | - - -- - | -- - | - - - - -
-
- Request calldata _request,- - |
-
380 | - - -- - | -- - | - - - - -
-
- Response calldata _response,- - |
-
381 | - - -- - | -- - | - - - - -
-
- Dispute calldata _dispute- - |
-
382 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes32 _disputeId);- - |
-
383 | - - -- - | -- - | - - - - -- - - - | -
384 | - - -- - | -- - | - - - - -
-
- /**- - |
-
385 | - - -- - | -- - | - - - - -
-
- * @notice Escalates a dispute, sending it to the resolution module- - |
-
386 | - - -- - | -- - | - - - - -
-
- *- - |
-
387 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
388 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
389 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being escalated- - |
-
390 | - - -- - | -- - | - - - - -
-
- */- - |
-
391 | - - -- - | -- - | - - - - -
-
- function escalateDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external;- - |
-
392 | - - -- - | -- - | - - - - -- - - - | -
393 | - - -- - | -- - | - - - - -
-
- /**- - |
-
394 | - - -- - | -- - | - - - - -
-
- * @notice Resolves a dispute- - |
-
395 | - - -- - | -- - | - - - - -
-
- *- - |
-
396 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
397 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
398 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being resolved- - |
-
399 | - - -- - | -- - | - - - - -
-
- */- - |
-
400 | - - -- - | -- - | - - - - -
-
- function resolveDispute(Request calldata _request, Response calldata _response, Dispute calldata _dispute) external;- - |
-
401 | - - -- - | -- - | - - - - -- - - - | -
402 | - - -- - | -- - | - - - - -
-
- /**- - |
-
403 | - - -- - | -- - | - - - - -
-
- * @notice Updates the status of a dispute- - |
-
404 | - - -- - | -- - | - - - - -
-
- *- - |
-
405 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
406 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
407 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being updated- - |
-
408 | - - -- - | -- - | - - - - -
-
- * @param _status The new status of the dispute- - |
-
409 | - - -- - | -- - | - - - - -
-
- */- - |
-
410 | - - -- - | -- - | - - - - -
-
- function updateDisputeStatus(- - |
-
411 | - - -- - | -- - | - - - - -
-
- Request calldata _request,- - |
-
412 | - - -- - | -- - | - - - - -
-
- Response calldata _response,- - |
-
413 | - - -- - | -- - | - - - - -
-
- Dispute calldata _dispute,- - |
-
414 | - - -- - | -- - | - - - - -
-
- DisputeStatus _status- - |
-
415 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
416 | - - -- - | -- - | - - - - -- - - - | -
417 | - - -- - | -- - | - - - - -
-
- /**- - |
-
418 | - - -- - | -- - | - - - - -
-
- * @notice Checks if the given address is a module used in the request- - |
-
419 | - - -- - | -- - | - - - - -
-
- *- - |
-
420 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
421 | - - -- - | -- - | - - - - -
-
- * @param _module The address to check- - |
-
422 | - - -- - | -- - | - - - - -
-
- * @return _allowedModule If the module is a part of the request- - |
-
423 | - - -- - | -- - | - - - - -
-
- */- - |
-
424 | - - -- - | -- - | - - - - -
-
- function allowedModule(bytes32 _requestId, address _module) external view returns (bool _allowedModule);- - |
-
425 | - - -- - | -- - | - - - - -- - - - | -
426 | - - -- - | -- - | - - - - -
-
- /**- - |
-
427 | - - -- - | -- - | - - - - -
-
- * @notice Checks if the given address is participating in a specific request- - |
-
428 | - - -- - | -- - | - - - - -
-
- *- - |
-
429 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
430 | - - -- - | -- - | - - - - -
-
- * @param _user The address to check- - |
-
431 | - - -- - | -- - | - - - - -
-
- * @return _isParticipant If the user is a participant of the request- - |
-
432 | - - -- - | -- - | - - - - -
-
- */- - |
-
433 | - - -- - | -- - | - - - - -
-
- function isParticipant(bytes32 _requestId, address _user) external view returns (bool _isParticipant);- - |
-
434 | - - -- - | -- - | - - - - -- - - - | -
435 | - - -- - | -- - | - - - - -
-
- /**- - |
-
436 | - - -- - | -- - | - - - - -
-
- * @notice Returns the ids of the responses for a given request- - |
-
437 | - - -- - | -- - | - - - - -
-
- *- - |
-
438 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
439 | - - -- - | -- - | - - - - -
-
- * @return _ids The ids of the responses- - |
-
440 | - - -- - | -- - | - - - - -
-
- */- - |
-
441 | - - -- - | -- - | - - - - -
-
- function getResponseIds(bytes32 _requestId) external view returns (bytes32[] memory _ids);- - |
-
442 | - - -- - | -- - | - - - - -- - - - | -
443 | - - -- - | -- - | - - - - -
-
- /**- - |
-
444 | - - -- - | -- - | - - - - -
-
- * @notice Finalizes the request and executes the post-request logic on the modules- - |
-
445 | - - -- - | -- - | - - - - -
-
- *- - |
-
446 | - - -- - | -- - | - - - - -
-
- * @dev In case of a request with no responses, an response with am empty `requestId` is expected- - |
-
447 | - - -- - | -- - | - - - - -
-
- * @param _request The request being finalized- - |
-
448 | - - -- - | -- - | - - - - -
-
- * @param _response The final response- - |
-
449 | - - -- - | -- - | - - - - -
-
- */- - |
-
450 | - - -- - | -- - | - - - - -
-
- function finalize(Request calldata _request, Response calldata _response) external;- - |
-
451 | - - -- - | -- - | - - - - -
-
- }- - |
-
452 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from './IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- /**- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @title Validator- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @notice Contract to validate requests, responses, and disputes- - |
-
9 | - - -- - | -- - | - - - - -
-
- */- - |
-
10 | - - -- - | -- - | - - - - -
-
- interface IValidator {- - |
-
11 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
12 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
13 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
14 | - - -- - | -- - | - - - - -- - - - | -
15 | - - -- - | -- - | - - - - -
-
- /**- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the response provided does not exist- - |
-
17 | - - -- - | -- - | - - - - -
-
- */- - |
-
18 | - - -- - | -- - | - - - - -
-
- error Validator_InvalidResponse();- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- /**- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the dispute provided does not exist- - |
-
22 | - - -- - | -- - | - - - - -
-
- */- - |
-
23 | - - -- - | -- - | - - - - -
-
- error Validator_InvalidDispute();- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
26 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
27 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /**- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @notice The oracle contract- - |
-
31 | - - -- - | -- - | - - - - -
-
- */- - |
-
32 | - - -- - | -- - | - - - - -
-
- function ORACLE() external view returns (IOracle _oracle);- - |
-
33 | - - -- - | -- - | - - - - -
-
- }- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule} from '../../IModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '../../IOracle.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- interface IDisputeModule is IModule {- - |
-
8 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
9 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
10 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- /**- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a response is disputed- - |
-
14 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @param _responseId The id of the response disputed- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being created- - |
-
18 | - - -- - | -- - | - - - - -
-
- */- - |
-
19 | - - -- - | -- - | - - - - -
-
- event ResponseDisputed(- - |
-
20 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, bytes32 indexed _responseId, bytes32 indexed _disputeId, IOracle.Dispute _dispute- - |
-
21 | - - -- - | -- - | - - - - -
-
- );- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /**- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a dispute status is updated- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute- - |
-
27 | - - -- - | -- - | - - - - -
-
- * @param _status The new status of the dispute- - |
-
28 | - - -- - | -- - | - - - - -
-
- */- - |
-
29 | - - -- - | -- - | - - - - -
-
- event DisputeStatusChanged(bytes32 indexed _disputeId, IOracle.Dispute _dispute, IOracle.DisputeStatus _status);- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
32 | - - -- - | -- - | - - - - -
-
- FUNCTIONS- - |
-
33 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- /**- - |
-
36 | - - -- - | -- - | - - - - -
-
- * @notice Called by the oracle when a dispute has been made on a response- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @dev Bonds the tokens of the disputer- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute- - |
-
41 | - - -- - | -- - | - - - - -
-
- */- - |
-
42 | - - -- - | -- - | - - - - -
-
- function disputeResponse(- - |
-
43 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
44 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
45 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
46 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- /**- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @notice Callback executed after a response to a dispute is received by the oracle- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
51 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
52 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute- - |
-
54 | - - -- - | -- - | - - - - -
-
- */- - |
-
55 | - - -- - | -- - | - - - - -
-
- function onDisputeStatusChange(- - |
-
56 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
57 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
58 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
59 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
60 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
61 | - - -- - | -- - | - - - - -
-
- }- - |
-
62 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule} from '../../IModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- interface IFinalityModule is IModule {}- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule} from '../../IModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- interface IRequestModule is IModule {- - |
-
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @notice Called by the oracle when a request has been made- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
10 | - - -- - | -- - | - - - - -
-
- * @param _data The data of the request- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @param _requester The address of the requester- - |
-
12 | - - -- - | -- - | - - - - -
-
- */- - |
-
13 | - - -- - | -- - | - - - - -
-
- function createRequest(bytes32 _requestId, bytes calldata _data, address _requester) external;- - |
-
14 | - - -- - | -- - | - - - - -
-
- }- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule} from '../../IModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '../../IOracle.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @title ResolutionModule- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @notice Common interface for all resolution modules- - |
-
10 | - - -- - | -- - | - - - - -
-
- */- - |
-
11 | - - -- - | -- - | - - - - -
-
- interface IResolutionModule is IModule {- - |
-
12 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
13 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
14 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
15 | - - -- - | -- - | - - - - -
-
- /**- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a dispute has been resolved- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id for the request that was disputed- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id for the dispute that was resolved- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @param _status The final result of the resolution- - |
-
20 | - - -- - | -- - | - - - - -
-
- */- - |
-
21 | - - -- - | -- - | - - - - -
-
- event DisputeResolved(bytes32 indexed _requestId, bytes32 indexed _disputeId, IOracle.DisputeStatus _status);- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /**- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a resolution is started- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id for the request for the dispute- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id for the dispute that the resolution was started for- - |
-
27 | - - -- - | -- - | - - - - -
-
- */- - |
-
28 | - - -- - | -- - | - - - - -
-
- event ResolutionStarted(bytes32 indexed _requestId, bytes32 indexed _disputeId);- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
30 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
31 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
32 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- /**- - |
-
35 | - - -- - | -- - | - - - - -
-
- * @notice Starts the resolution process- - |
-
36 | - - -- - | -- - | - - - - -
-
- *- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _request The request data- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute being resolved- - |
-
41 | - - -- - | -- - | - - - - -
-
- */- - |
-
42 | - - -- - | -- - | - - - - -
-
- function startResolution(- - |
-
43 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
44 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
45 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
46 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
47 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -- - | -- - | - - - - -
-
- /**- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @notice Resolves a dispute- - |
-
51 | - - -- - | -- - | - - - - -
-
- *- - |
-
52 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute being resolved- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @param _request The request data- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
55 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute being resolved- - |
-
56 | - - -- - | -- - | - - - - -
-
- */- - |
-
57 | - - -- - | -- - | - - - - -
-
- function resolveDispute(- - |
-
58 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
59 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
60 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
61 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
62 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
63 | - - -- - | -- - | - - - - -
-
- }- - |
-
64 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule} from '../../IModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '../../IOracle.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @title ResponseModule- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @notice Common interface for all response modules- - |
-
10 | - - -- - | -- - | - - - - -
-
- */- - |
-
11 | - - -- - | -- - | - - - - -
-
- interface IResponseModule is IModule {- - |
-
12 | - - -- - | -- - | - - - - -
-
- /**- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @notice Creates a new response for a given request- - |
-
14 | - - -- - | -- - | - - - - -
-
- *- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @param _request The request to create a response for- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @param _response The response to create- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @param _sender The creator of the response- - |
-
18 | - - -- - | -- - | - - - - -
-
- */- - |
-
19 | - - -- - | -- - | - - - - -
-
- function propose(IOracle.Request calldata _request, IOracle.Response calldata _response, address _sender) external;- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- /**- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @notice Refunds the proposer for a valid and unutilized response- - |
-
23 | - - -- - | -- - | - - - - -
-
- *- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _response The unutilized response- - |
-
26 | - - -- - | -- - | - - - - -
-
- */- - |
-
27 | - - -- - | -- - | - - - - -
-
- function releaseUnutilizedResponse(IOracle.Request calldata _request, IOracle.Response calldata _response) external;- - |
-
28 | - - -- - | -- - | - - - - -
-
- }- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 26 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '../interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- library ValidatorLib {- - |
-
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the response provided does not match the request- - |
-
9 | - - -- - | -- - | - - - - -
-
- */- - |
-
10 | - - -- - | -- - | - - - - -
-
- error ValidatorLib_InvalidResponseBody();- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- /**- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the dispute provided does not match the request or response- - |
-
14 | - - -- - | -- - | - - - - -
-
- */- - |
-
15 | - - -- - | -- - | - - - - -
-
- error ValidatorLib_InvalidDisputeBody();- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /**- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @notice Computes the id a given request- - |
-
19 | - - -- - | -- - | - - - - -
-
- *- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @return _id The id the request- - |
-
22 | - - -- - | -- - | - - - - -
-
- */- - |
-
23 | - - -- - | -- - | - - - - -
-
- function _getId(IOracle.Request calldata _request) public pure returns (bytes32 _id) {- - |
-
24 | - - -- - | -- - | - - - - -
-
- _id = keccak256(abi.encode(_request));- - |
-
25 | - - -- - | -- - | - - - - -
-
- }- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- /**- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @notice Computes the id a given response- - |
-
29 | - - -- - | -- - | - - - - -
-
- *- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
31 | - - -- - | -- - | - - - - -
-
- * @return _id The id the response- - |
-
32 | - - -- - | -- - | - - - - -
-
- */- - |
-
33 | - - -- - | -- - | - - - - -
-
- function _getId(IOracle.Response calldata _response) public pure returns (bytes32 _id) {- - |
-
34 | - - -- - | -- - | - - - - -
-
- _id = keccak256(abi.encode(_response));- - |
-
35 | - - -- - | -- - | - - - - -
-
- }- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- /**- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @notice Computes the id a given dispute- - |
-
39 | - - -- - | -- - | - - - - -
-
- *- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @return _id The id the dispute- - |
-
42 | - - -- - | -- - | - - - - -
-
- */- - |
-
43 | - - -- - | -- - | - - - - -
-
- function _getId(IOracle.Dispute calldata _dispute) public pure returns (bytes32 _id) {- - |
-
44 | - - -- - | -- - | - - - - -
-
- _id = keccak256(abi.encode(_dispute));- - |
-
45 | - - -- - | -- - | - - - - -
-
- }- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- /**- - |
-
48 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness and existance of a request-response pair- - |
-
49 | - - -- - | -- - | - - - - -
-
- *- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
51 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
52 | - - -- - | -- - | - - - - -
-
- * @return _responseId The id the response- - |
-
53 | - - -- - | -- - | - - - - -
-
- */- - |
-
54 | - - -- - | -- - | - - - - -
-
- function _validateResponse(- - |
-
55 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
56 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response- - |
-
57 | - - -- - | -- - | - - - - -
-
- ) public pure returns (bytes32 _responseId) {- - |
-
58 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _getId(_request);- - |
-
59 | - - -- - | -- - | - - - - -
-
- _responseId = _getId(_response);- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -- - | -- - | - - - - -
-
- if (_response.requestId != _requestId) revert ValidatorLib_InvalidResponseBody();- - |
-
62 | - - -- - | -- - | - - - - -
-
- }- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- /**- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness of a request-dispute pair- - |
-
66 | - - -- - | -- - | - - - - -
-
- *- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
68 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id the dispute- - |
-
70 | - - -- - | -- - | - - - - -
-
- */- - |
-
71 | - - -- - | -- - | - - - - -
-
- function _validateDispute(- - |
-
72 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
73 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
74 | - - -- - | -- - | - - - - -
-
- ) public pure returns (bytes32 _disputeId) {- - |
-
75 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _getId(_request);- - |
-
76 | - - -- - | -- - | - - - - -
-
- _disputeId = _getId(_dispute);- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- if (_dispute.requestId != _requestId) revert ValidatorLib_InvalidDisputeBody();- - |
-
79 | - - -- - | -- - | - - - - -
-
- }- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- /**- - |
-
82 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness of a response-dispute pair- - |
-
83 | - - -- - | -- - | - - - - -
-
- *- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
85 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id the dispute- - |
-
87 | - - -- - | -- - | - - - - -
-
- */- - |
-
88 | - - -- - | -- - | - - - - -
-
- function _validateDispute(- - |
-
89 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
90 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
91 | - - -- - | -- - | - - - - -
-
- ) public pure returns (bytes32 _disputeId) {- - |
-
92 | - - -- - | -- - | - - - - -
-
- bytes32 _responseId = _getId(_response);- - |
-
93 | - - -- - | -- - | - - - - -
-
- _disputeId = _getId(_dispute);- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- if (_dispute.responseId != _responseId) revert ValidatorLib_InvalidDisputeBody();- - |
-
96 | - - -- - | -- - | - - - - -
-
- }- - |
-
97 | - - -- - | -- - | - - - - -- - - - | -
98 | - - -- - | -- - | - - - - -
-
- /**- - |
-
99 | - - -- - | -- - | - - - - -
-
- * @notice Validates the correctness of a request-response-dispute triplet- - |
-
100 | - - -- - | -- - | - - - - -
-
- *- - |
-
101 | - - -- - | -- - | - - - - -
-
- * @param _request The request to compute the id for- - |
-
102 | - - -- - | -- - | - - - - -
-
- * @param _response The response to compute the id for- - |
-
103 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute to compute the id for- - |
-
104 | - - -- - | -- - | - - - - -
-
- * @return _responseId The id the response- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @return _disputeId The id the dispute- - |
-
106 | - - -- - | -- - | - - - - -
-
- */- - |
-
107 | - - -- - | -- - | - - - - -
-
- function _validateResponseAndDispute(- - |
-
108 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
109 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
110 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
111 | - - -- - | -- - | - - - - -
-
- ) public pure returns (bytes32 _responseId, bytes32 _disputeId) {- - |
-
112 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _getId(_request);- - |
-
113 | - - -- - | -- - | - - - - -
-
- _responseId = _getId(_response);- - |
-
114 | - - -- - | -- - | - - - - -
-
- _disputeId = _getId(_dispute);- - |
-
115 | - - -- - | -- - | - - - - -- - - - | -
116 | - - -- - | -- - | - - - - -
-
- if (_response.requestId != _requestId) revert ValidatorLib_InvalidResponseBody();- - |
-
117 | - - -- - | -- - | - - - - -
-
- if (_dispute.requestId != _requestId || _dispute.responseId != _responseId) {- - |
-
118 | - - -- - | -- - | - - - - -
-
- revert ValidatorLib_InvalidDisputeBody();- - |
-
119 | - - -- - | -- - | - - - - -
-
- }- - |
-
120 | - - -- - | -- - | - - - - -
-
- }- - |
-
121 | - - -- - | -- - | - - - - -
-
- }- - |
-
122 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 169 (0.6%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
6 | - - -- - | -- - | - - - - -
-
- import {FixedPointMathLib} from 'solmate/src/utils/FixedPointMathLib.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- import {IBondEscalationModule} from '../../../interfaces/modules/dispute/IBondEscalationModule.sol';- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- contract BondEscalationModule is Module, IBondEscalationModule {- - |
-
11 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
12 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => mapping(address _pledger => uint256 pledges)) public pledgesForDispute;- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
15 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => mapping(address _pledger => uint256 pledges)) public pledgesAgainstDispute;- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /**- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @notice Struct containing all the data for a given escalation.- - |
-
19 | - - -- - | -- - | - - - - -
-
- */- - |
-
20 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => BondEscalation) internal _escalations;- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -
-
- √
-
- |
- - - | - - - - -
-
- constructor(IOracle _oracle) Module(_oracle) {}- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
25 | - - -- - | -- - | - - - - -
-
- function moduleName() external pure returns (string memory _moduleName) {- - |
-
26 | - - -- - | -- - | - - - - -
-
- return 'BondEscalationModule';- - |
-
27 | - - -- - | -- - | - - - - -
-
- }- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
30 | - - -- - | -- - | - - - - -
-
- function disputeResponse(- - |
-
31 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
32 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
33 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
34 | - - -- - | -- - | - - - - -
-
- ) external onlyOracle {- - |
-
35 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _getId(_dispute);- - |
-
36 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.disputeModuleData);- - |
-
37 | - - -- - | -- - | - - - - -
-
- BondEscalation storage _escalation = _escalations[_dispute.requestId];- - |
-
38 | - - -- - | -- - | - - - - -- - - - | -
39 | - - -- - | -- - | - - - - -
-
- if (block.timestamp > ORACLE.responseCreatedAt(_dispute.responseId) + _params.disputeWindow) {- - |
-
40 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_DisputeWindowOver();- - |
-
41 | - - -- - | -- - | - - - - -
-
- }- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.bond({- - |
-
44 | - - -- - | -- - | - - - - -
-
- _bonder: _dispute.disputer,- - |
-
45 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
46 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
47 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
48 | - - -- - | -- - | - - - - -
-
- });- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- emit ResponseDisputed({- - |
-
51 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
52 | - - -- - | -- - | - - - - -
-
- _responseId: _dispute.responseId,- - |
-
53 | - - -- - | -- - | - - - - -
-
- _disputeId: _disputeId,- - |
-
54 | - - -- - | -- - | - - - - -
-
- _dispute: _dispute- - |
-
55 | - - -- - | -- - | - - - - -
-
- });- - |
-
56 | - - -- - | -- - | - - - - -- - - - | -
57 | - - -- - | -- - | - - - - -
-
- // Only the first dispute of a request should go through the bond escalation- - |
-
58 | - - -- - | -- - | - - - - -
-
- // Consecutive disputes should be handled by the resolution module- - |
-
59 | - - -- - | -- - | - - - - -
-
- if (_escalation.status == BondEscalationStatus.None) {- - |
-
60 | - - -- - | -- - | - - - - -
-
- _escalation.status = BondEscalationStatus.Active;- - |
-
61 | - - -- - | -- - | - - - - -
-
- _escalation.disputeId = _disputeId;- - |
-
62 | - - -- - | -- - | - - - - -
-
- emit BondEscalationStatusUpdated(_dispute.requestId, _disputeId, BondEscalationStatus.Active);- - |
-
63 | - - -- - | -- - | - - - - -
-
- } else if (_disputeId != _escalation.disputeId) {- - |
-
64 | - - -- - | -- - | - - - - -
-
- ORACLE.escalateDispute(_request, _response, _dispute);- - |
-
65 | - - -- - | -- - | - - - - -
-
- }- - |
-
66 | - - -- - | -- - | - - - - -
-
- }- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
69 | - - -- - | -- - | - - - - -
-
- function onDisputeStatusChange(- - |
-
70 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
71 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
72 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata,- - |
-
73 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
74 | - - -- - | -- - | - - - - -
-
- ) external onlyOracle {- - |
-
75 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.disputeModuleData);- - |
-
76 | - - -- - | -- - | - - - - -
-
- BondEscalation storage _escalation = _escalations[_dispute.requestId];- - |
-
77 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _disputeStatus = ORACLE.disputeStatus(_disputeId);- - |
-
78 | - - -- - | -- - | - - - - -
-
- BondEscalationStatus _newStatus;- - |
-
79 | - - -- - | -- - | - - - - -- - - - | -
80 | - - -- - | -- - | - - - - -
-
- if (_disputeId == _escalation.disputeId) {- - |
-
81 | - - -- - | -- - | - - - - -
-
- // The bond escalated (first) dispute has been updated- - |
-
82 | - - -- - | -- - | - - - - -
-
- if (_disputeStatus == IOracle.DisputeStatus.Escalated) {- - |
-
83 | - - -- - | -- - | - - - - -
-
- // The dispute has been escalated to the Resolution module- - |
-
84 | - - -- - | -- - | - - - - -
-
- // Make sure the bond escalation deadline has passed and update the status- - |
-
85 | - - -- - | -- - | - - - - -
-
- if (block.timestamp <= ORACLE.disputeCreatedAt(_disputeId) + _params.bondEscalationDeadline) {- - |
-
86 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_BondEscalationNotOver();- - |
-
87 | - - -- - | -- - | - - - - -
-
- }- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- if (- - |
-
90 | - - -- - | -- - | - - - - -
-
- _escalation.status != BondEscalationStatus.Active- - |
-
91 | - - -- - | -- - | - - - - -
-
- || _escalation.amountOfPledgesForDispute != _escalation.amountOfPledgesAgainstDispute- - |
-
92 | - - -- - | -- - | - - - - -
-
- ) {- - |
-
93 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_NotEscalatable();- - |
-
94 | - - -- - | -- - | - - - - -
-
- }- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- _newStatus = BondEscalationStatus.Escalated;- - |
-
97 | - - -- - | -- - | - - - - -
-
- } else if (_disputeStatus == IOracle.DisputeStatus.NoResolution) {- - |
-
98 | - - -- - | -- - | - - - - -
-
- // The resolution module failed to reach a resolution- - |
-
99 | - - -- - | -- - | - - - - -
-
- // Refund the disputer and all pledgers, the bond escalation escalation status stays Escalated- - |
-
100 | - - -- - | -- - | - - - - -
-
- _newStatus = BondEscalationStatus.Escalated;- - |
-
101 | - - -- - | -- - | - - - - -- - - - | -
102 | - - -- - | -- - | - - - - -
-
- if (_escalation.amountOfPledgesForDispute + _escalation.amountOfPledgesAgainstDispute > 0) {- - |
-
103 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.onSettleBondEscalation({- - |
-
104 | - - -- - | -- - | - - - - -
-
- _request: _request,- - |
-
105 | - - -- - | -- - | - - - - -
-
- _dispute: _dispute,- - |
-
106 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
107 | - - -- - | -- - | - - - - -
-
- _amountPerPledger: _params.bondSize,- - |
-
108 | - - -- - | -- - | - - - - -
-
- _winningPledgersLength: _escalation.amountOfPledgesForDispute + _escalation.amountOfPledgesAgainstDispute- - |
-
109 | - - -- - | -- - | - - - - -
-
- });- - |
-
110 | - - -- - | -- - | - - - - -
-
- }- - |
-
111 | - - -- - | -- - | - - - - -- - - - | -
112 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.release({- - |
-
113 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
114 | - - -- - | -- - | - - - - -
-
- _bonder: _dispute.disputer,- - |
-
115 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
116 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
117 | - - -- - | -- - | - - - - -
-
- });- - |
-
118 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
119 | - - -- - | -- - | - - - - -
-
- // One of the sides won- - |
-
120 | - - -- - | -- - | - - - - -
-
- // Pay the winner (proposer/disputer) and the pledgers, the bond escalation status changes to DisputerWon/DisputerLost- - |
-
121 | - - -- - | -- - | - - - - -
-
- bool _won = _disputeStatus == IOracle.DisputeStatus.Won;- - |
-
122 | - - -- - | -- - | - - - - -
-
- _newStatus = _won ? BondEscalationStatus.DisputerWon : BondEscalationStatus.DisputerLost;- - |
-
123 | - - -- - | -- - | - - - - -- - - - | -
124 | - - -- - | -- - | - - - - -
-
- uint256 _pledgesForDispute = _escalation.amountOfPledgesForDispute;- - |
-
125 | - - -- - | -- - | - - - - -
-
- uint256 _pledgesAgainstDispute = _escalation.amountOfPledgesAgainstDispute;- - |
-
126 | - - -- - | -- - | - - - - -- - - - | -
127 | - - -- - | -- - | - - - - -
-
- if (_pledgesAgainstDispute > 0 || _pledgesForDispute > 0) {- - |
-
128 | - - -- - | -- - | - - - - -
-
- uint256 _amountToPay = _won- - |
-
129 | - - -- - | -- - | - - - - -
-
- ? _params.bondSize- - |
-
130 | - - -- - | -- - | - - - - -
-
- + FixedPointMathLib.mulDivDown(_pledgesAgainstDispute, _params.bondSize, _pledgesForDispute)- - |
-
131 | - - -- - | -- - | - - - - -
-
- : _params.bondSize- - |
-
132 | - - -- - | -- - | - - - - -
-
- + FixedPointMathLib.mulDivDown(_pledgesForDispute, _params.bondSize, _pledgesAgainstDispute);- - |
-
133 | - - -- - | -- - | - - - - -- - - - | -
134 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.onSettleBondEscalation({- - |
-
135 | - - -- - | -- - | - - - - -
-
- _request: _request,- - |
-
136 | - - -- - | -- - | - - - - -
-
- _dispute: _dispute,- - |
-
137 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
138 | - - -- - | -- - | - - - - -
-
- _amountPerPledger: _amountToPay,- - |
-
139 | - - -- - | -- - | - - - - -
-
- _winningPledgersLength: _won ? _pledgesForDispute : _pledgesAgainstDispute- - |
-
140 | - - -- - | -- - | - - - - -
-
- });- - |
-
141 | - - -- - | -- - | - - - - -
-
- }- - |
-
142 | - - -- - | -- - | - - - - -- - - - | -
143 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.pay({- - |
-
144 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
145 | - - -- - | -- - | - - - - -
-
- _payer: _won ? _dispute.proposer : _dispute.disputer,- - |
-
146 | - - -- - | -- - | - - - - -
-
- _receiver: _won ? _dispute.disputer : _dispute.proposer,- - |
-
147 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
148 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
149 | - - -- - | -- - | - - - - -
-
- });- - |
-
150 | - - -- - | -- - | - - - - -- - - - | -
151 | - - -- - | -- - | - - - - -
-
- if (_won) {- - |
-
152 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.release({- - |
-
153 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
154 | - - -- - | -- - | - - - - -
-
- _bonder: _dispute.disputer,- - |
-
155 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
156 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
157 | - - -- - | -- - | - - - - -
-
- });- - |
-
158 | - - -- - | -- - | - - - - -
-
- }- - |
-
159 | - - -- - | -- - | - - - - -
-
- }- - |
-
160 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
161 | - - -- - | -- - | - - - - -
-
- // The non-bond escalated (second and subsequent) dispute has been updated- - |
-
162 | - - -- - | -- - | - - - - -
-
- if (_disputeStatus == IOracle.DisputeStatus.Escalated) {- - |
-
163 | - - -- - | -- - | - - - - -
-
- // The dispute has been escalated to the Resolution module- - |
-
164 | - - -- - | -- - | - - - - -
-
- // Update the bond escalation status to Escalated- - |
-
165 | - - -- - | -- - | - - - - -
-
- _newStatus = BondEscalationStatus.Escalated;- - |
-
166 | - - -- - | -- - | - - - - -
-
- } else if (_disputeStatus == IOracle.DisputeStatus.NoResolution) {- - |
-
167 | - - -- - | -- - | - - - - -
-
- // The resolution module failed to reach a resolution- - |
-
168 | - - -- - | -- - | - - - - -
-
- // Refund the disputer, the bond escalation status stays Escalated- - |
-
169 | - - -- - | -- - | - - - - -
-
- _newStatus = BondEscalationStatus.Escalated;- - |
-
170 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.release({- - |
-
171 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
172 | - - -- - | -- - | - - - - -
-
- _bonder: _dispute.disputer,- - |
-
173 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
174 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
175 | - - -- - | -- - | - - - - -
-
- });- - |
-
176 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
177 | - - -- - | -- - | - - - - -
-
- // One of the sides won- - |
-
178 | - - -- - | -- - | - - - - -
-
- // Pay the winner (proposer/disputer), the bond escalation status changes to DisputerWon/DisputerLost- - |
-
179 | - - -- - | -- - | - - - - -
-
- bool _won = _disputeStatus == IOracle.DisputeStatus.Won;- - |
-
180 | - - -- - | -- - | - - - - -
-
- _newStatus = _won ? BondEscalationStatus.DisputerWon : BondEscalationStatus.DisputerLost;- - |
-
181 | - - -- - | -- - | - - - - -- - - - | -
182 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.pay({- - |
-
183 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
184 | - - -- - | -- - | - - - - -
-
- _payer: _won ? _dispute.proposer : _dispute.disputer,- - |
-
185 | - - -- - | -- - | - - - - -
-
- _receiver: _won ? _dispute.disputer : _dispute.proposer,- - |
-
186 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
187 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
188 | - - -- - | -- - | - - - - -
-
- });- - |
-
189 | - - -- - | -- - | - - - - -- - - - | -
190 | - - -- - | -- - | - - - - -
-
- if (_won) {- - |
-
191 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.release({- - |
-
192 | - - -- - | -- - | - - - - -
-
- _requestId: _dispute.requestId,- - |
-
193 | - - -- - | -- - | - - - - -
-
- _bonder: _dispute.disputer,- - |
-
194 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
195 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
196 | - - -- - | -- - | - - - - -
-
- });- - |
-
197 | - - -- - | -- - | - - - - -
-
- }- - |
-
198 | - - -- - | -- - | - - - - -
-
- }- - |
-
199 | - - -- - | -- - | - - - - -
-
- }- - |
-
200 | - - -- - | -- - | - - - - -- - - - | -
201 | - - -- - | -- - | - - - - -
-
- _escalation.status = _newStatus;- - |
-
202 | - - -- - | -- - | - - - - -
-
- emit BondEscalationStatusUpdated(_dispute.requestId, _disputeId, _newStatus);- - |
-
203 | - - -- - | -- - | - - - - -
-
- emit DisputeStatusChanged({_disputeId: _disputeId, _dispute: _dispute, _status: _disputeStatus});- - |
-
204 | - - -- - | -- - | - - - - -
-
- }- - |
-
205 | - - -- - | -- - | - - - - -- - - - | -
206 | - - -- - | -- - | - - - - -
-
- ////////////////////////////////////////////////////////////////////- - |
-
207 | - - -- - | -- - | - - - - -
-
- // Bond Escalation Exclusive Functions- - |
-
208 | - - -- - | -- - | - - - - -
-
- ////////////////////////////////////////////////////////////////////- - |
-
209 | - - -- - | -- - | - - - - -- - - - | -
210 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
211 | - - -- - | -- - | - - - - -
-
- function pledgeForDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external {- - |
-
212 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _getId(_dispute);- - |
-
213 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = _pledgeChecks(_request, _dispute, true);- - |
-
214 | - - -- - | -- - | - - - - -- - - - | -
215 | - - -- - | -- - | - - - - -
-
- _escalations[_dispute.requestId].amountOfPledgesForDispute += 1;- - |
-
216 | - - -- - | -- - | - - - - -
-
- pledgesForDispute[_dispute.requestId][msg.sender] += 1;- - |
-
217 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.pledge({- - |
-
218 | - - -- - | -- - | - - - - -
-
- _pledger: msg.sender,- - |
-
219 | - - -- - | -- - | - - - - -
-
- _request: _request,- - |
-
220 | - - -- - | -- - | - - - - -
-
- _dispute: _dispute,- - |
-
221 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
222 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
223 | - - -- - | -- - | - - - - -
-
- });- - |
-
224 | - - -- - | -- - | - - - - -- - - - | -
225 | - - -- - | -- - | - - - - -
-
- emit PledgedForDispute(_disputeId, msg.sender, _params.bondSize);- - |
-
226 | - - -- - | -- - | - - - - -
-
- }- - |
-
227 | - - -- - | -- - | - - - - -- - - - | -
228 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
229 | - - -- - | -- - | - - - - -
-
- function pledgeAgainstDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external {- - |
-
230 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _getId(_dispute);- - |
-
231 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = _pledgeChecks(_request, _dispute, false);- - |
-
232 | - - -- - | -- - | - - - - -- - - - | -
233 | - - -- - | -- - | - - - - -
-
- _escalations[_dispute.requestId].amountOfPledgesAgainstDispute += 1;- - |
-
234 | - - -- - | -- - | - - - - -
-
- pledgesAgainstDispute[_dispute.requestId][msg.sender] += 1;- - |
-
235 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.pledge({- - |
-
236 | - - -- - | -- - | - - - - -
-
- _pledger: msg.sender,- - |
-
237 | - - -- - | -- - | - - - - -
-
- _request: _request,- - |
-
238 | - - -- - | -- - | - - - - -
-
- _dispute: _dispute,- - |
-
239 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
240 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
241 | - - -- - | -- - | - - - - -
-
- });- - |
-
242 | - - -- - | -- - | - - - - -- - - - | -
243 | - - -- - | -- - | - - - - -
-
- emit PledgedAgainstDispute(_disputeId, msg.sender, _params.bondSize);- - |
-
244 | - - -- - | -- - | - - - - -
-
- }- - |
-
245 | - - -- - | -- - | - - - - -- - - - | -
246 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
247 | - - -- - | -- - | - - - - -
-
- function settleBondEscalation(- - |
-
248 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
249 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
250 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
251 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
252 | - - -- - | -- - | - - - - -
-
- (, bytes32 _disputeId) = _validateResponseAndDispute(_request, _response, _dispute);- - |
-
253 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.disputeModuleData);- - |
-
254 | - - -- - | -- - | - - - - -
-
- BondEscalation storage _escalation = _escalations[_dispute.requestId];- - |
-
255 | - - -- - | -- - | - - - - -- - - - | -
256 | - - -- - | -- - | - - - - -
-
- uint256 _disputeCreatedAt = ORACLE.disputeCreatedAt(_disputeId);- - |
-
257 | - - -- - | -- - | - - - - -
-
- if (block.timestamp <= _disputeCreatedAt + _params.bondEscalationDeadline + _params.tyingBuffer) {- - |
-
258 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_BondEscalationNotOver();- - |
-
259 | - - -- - | -- - | - - - - -
-
- }- - |
-
260 | - - -- - | -- - | - - - - -- - - - | -
261 | - - -- - | -- - | - - - - -
-
- if (_escalation.status != BondEscalationStatus.Active) {- - |
-
262 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_BondEscalationCantBeSettled();- - |
-
263 | - - -- - | -- - | - - - - -
-
- }- - |
-
264 | - - -- - | -- - | - - - - -- - - - | -
265 | - - -- - | -- - | - - - - -
-
- uint256 _pledgesForDispute = _escalation.amountOfPledgesForDispute;- - |
-
266 | - - -- - | -- - | - - - - -
-
- uint256 _pledgesAgainstDispute = _escalation.amountOfPledgesAgainstDispute;- - |
-
267 | - - -- - | -- - | - - - - -- - - - | -
268 | - - -- - | -- - | - - - - -
-
- if (_pledgesForDispute == _pledgesAgainstDispute) {- - |
-
269 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_ShouldBeEscalated();- - |
-
270 | - - -- - | -- - | - - - - -
-
- }- - |
-
271 | - - -- - | -- - | - - - - -- - - - | -
272 | - - -- - | -- - | - - - - -
-
- bool _disputersWon = _pledgesForDispute > _pledgesAgainstDispute;- - |
-
273 | - - -- - | -- - | - - - - -
-
- _escalation.status = _disputersWon ? BondEscalationStatus.DisputerWon : BondEscalationStatus.DisputerLost;- - |
-
274 | - - -- - | -- - | - - - - -- - - - | -
275 | - - -- - | -- - | - - - - -
-
- emit BondEscalationStatusUpdated(_dispute.requestId, _disputeId, _escalation.status);- - |
-
276 | - - -- - | -- - | - - - - -- - - - | -
277 | - - -- - | -- - | - - - - -
-
- ORACLE.updateDisputeStatus(- - |
-
278 | - - -- - | -- - | - - - - -
-
- _request, _response, _dispute, _disputersWon ? IOracle.DisputeStatus.Won : IOracle.DisputeStatus.Lost- - |
-
279 | - - -- - | -- - | - - - - -
-
- );- - |
-
280 | - - -- - | -- - | - - - - -
-
- }- - |
-
281 | - - -- - | -- - | - - - - -- - - - | -
282 | - - -- - | -- - | - - - - -
-
- /**- - |
-
283 | - - -- - | -- - | - - - - -
-
- * @notice Checks the necessary conditions for pledging- - |
-
284 | - - -- - | -- - | - - - - -
-
- * @param _request The request data- - |
-
285 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data- - |
-
286 | - - -- - | -- - | - - - - -
-
- * @param _forDispute Whether the pledge is for or against the dispute- - |
-
287 | - - -- - | -- - | - - - - -
-
- * @return _params The decoded parameters for the request- - |
-
288 | - - -- - | -- - | - - - - -
-
- */- - |
-
289 | - - -- - | -- - | - - - - -
-
- function _pledgeChecks(- - |
-
290 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
291 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
292 | - - -- - | -- - | - - - - -
-
- bool _forDispute- - |
-
293 | - - -- - | -- - | - - - - -
-
- ) internal view returns (RequestParameters memory _params) {- - |
-
294 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _validateDispute(_request, _dispute);- - |
-
295 | - - -- - | -- - | - - - - -- - - - | -
296 | - - -- - | -- - | - - - - -
-
- BondEscalation memory _escalation = _escalations[_dispute.requestId];- - |
-
297 | - - -- - | -- - | - - - - -- - - - | -
298 | - - -- - | -- - | - - - - -
-
- if (_disputeId != _escalation.disputeId) {- - |
-
299 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_InvalidDispute();- - |
-
300 | - - -- - | -- - | - - - - -
-
- }- - |
-
301 | - - -- - | -- - | - - - - -- - - - | -
302 | - - -- - | -- - | - - - - -
-
- _params = decodeRequestData(_request.disputeModuleData);- - |
-
303 | - - -- - | -- - | - - - - -- - - - | -
304 | - - -- - | -- - | - - - - -
-
- uint256 _disputeCreatedAt = ORACLE.disputeCreatedAt(_disputeId);- - |
-
305 | - - -- - | -- - | - - - - -
-
- if (block.timestamp > _disputeCreatedAt + _params.bondEscalationDeadline + _params.tyingBuffer) {- - |
-
306 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_BondEscalationOver();- - |
-
307 | - - -- - | -- - | - - - - -
-
- }- - |
-
308 | - - -- - | -- - | - - - - -- - - - | -
309 | - - -- - | -- - | - - - - -
-
- uint256 _numPledgersForDispute = _escalation.amountOfPledgesForDispute;- - |
-
310 | - - -- - | -- - | - - - - -
-
- uint256 _numPledgersAgainstDispute = _escalation.amountOfPledgesAgainstDispute;- - |
-
311 | - - -- - | -- - | - - - - -- - - - | -
312 | - - -- - | -- - | - - - - -
-
- if (_forDispute) {- - |
-
313 | - - -- - | -- - | - - - - -
-
- if (_numPledgersForDispute == _params.maxNumberOfEscalations) {- - |
-
314 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_MaxNumberOfEscalationsReached();- - |
-
315 | - - -- - | -- - | - - - - -
-
- }- - |
-
316 | - - -- - | -- - | - - - - -
-
- if (_numPledgersForDispute > _numPledgersAgainstDispute) revert BondEscalationModule_CanOnlySurpassByOnePledge();- - |
-
317 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
318 | - - -- - | -- - | - - - - -
-
- if (_numPledgersAgainstDispute == _params.maxNumberOfEscalations) {- - |
-
319 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_MaxNumberOfEscalationsReached();- - |
-
320 | - - -- - | -- - | - - - - -
-
- }- - |
-
321 | - - -- - | -- - | - - - - -
-
- if (_numPledgersAgainstDispute > _numPledgersForDispute) revert BondEscalationModule_CanOnlySurpassByOnePledge();- - |
-
322 | - - -- - | -- - | - - - - -
-
- }- - |
-
323 | - - -- - | -- - | - - - - -- - - - | -
324 | - - -- - | -- - | - - - - -
-
- if (- - |
-
325 | - - -- - | -- - | - - - - -
-
- block.timestamp > _disputeCreatedAt + _params.bondEscalationDeadline- - |
-
326 | - - -- - | -- - | - - - - -
-
- && _numPledgersForDispute == _numPledgersAgainstDispute- - |
-
327 | - - -- - | -- - | - - - - -
-
- ) {- - |
-
328 | - - -- - | -- - | - - - - -
-
- revert BondEscalationModule_CannotBreakTieDuringTyingBuffer();- - |
-
329 | - - -- - | -- - | - - - - -
-
- }- - |
-
330 | - - -- - | -- - | - - - - -
-
- }- - |
-
331 | - - -- - | -- - | - - - - -- - - - | -
332 | - - -- - | -- - | - - - - -
-
- ////////////////////////////////////////////////////////////////////- - |
-
333 | - - -- - | -- - | - - - - -
-
- // View Functions- - |
-
334 | - - -- - | -- - | - - - - -
-
- ////////////////////////////////////////////////////////////////////- - |
-
335 | - - -- - | -- - | - - - - -- - - - | -
336 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
337 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {- - |
-
338 | - - -- - | -- - | - - - - -
-
- _params = abi.decode(_data, (RequestParameters));- - |
-
339 | - - -- - | -- - | - - - - -
-
- }- - |
-
340 | - - -- - | -- - | - - - - -- - - - | -
341 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondEscalationModule- - |
-
342 | - - -- - | -- - | - - - - -
-
- function getEscalation(bytes32 _requestId) public view returns (BondEscalation memory _escalation) {- - |
-
343 | - - -- - | -- - | - - - - -
-
- _escalation = _escalations[_requestId];- - |
-
344 | - - -- - | -- - | - - - - -
-
- }- - |
-
345 | - - -- - | -- - | - - - - -- - - - | -
346 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
347 | - - -- - | -- - | - - - - -
-
- function validateParameters(bytes calldata _encodedParameters)- - |
-
348 | - - -- - | -- - | - - - - -
-
- external- - |
-
349 | - - -- - | -- - | - - - - -
-
- pure- - |
-
350 | - - -- - | -- - | - - - - -
-
- override(Module, IModule)- - |
-
351 | - - -- - | -- - | - - - - -
-
- returns (bool _valid)- - |
-
352 | - - -- - | -- - | - - - - -
-
- {- - |
-
353 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_encodedParameters);- - |
-
354 | - - -- - | -- - | - - - - -
-
- _valid = address(_params.accountingExtension) != address(0) && address(_params.bondToken) != address(0)- - |
-
355 | - - -- - | -- - | - - - - -
-
- && _params.bondSize != 0 && _params.bondEscalationDeadline != 0 && _params.maxNumberOfEscalations != 0- - |
-
356 | - - -- - | -- - | - - - - -
-
- && _params.tyingBuffer != 0 && _params.disputeWindow != 0;- - |
-
357 | - - -- - | -- - | - - - - -
-
- }- - |
-
358 | - - -- - | -- - | - - - - -
-
- }- - |
-
359 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 20 (5.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- import {IArbitrator} from '../../../interfaces/IArbitrator.sol';- - |
-
8 | - - -- - | -- - | - - - - -
-
- import {IArbitratorModule} from '../../../interfaces/modules/resolution/IArbitratorModule.sol';- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- contract ArbitratorModule is Module, IArbitratorModule {- - |
-
11 | - - -- - | -- - | - - - - -
-
- /**- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @notice The status of all disputes- - |
-
13 | - - -- - | -- - | - - - - -
-
- */- - |
-
14 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => ArbitrationStatus _status) internal _disputeData;- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -
-
- √
-
- |
- - - | - - - - -
-
- constructor(IOracle _oracle) Module(_oracle) {}- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
18 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
19 | - - -- - | -- - | - - - - -
-
- function moduleName() external pure returns (string memory _moduleName) {- - |
-
20 | - - -- - | -- - | - - - - -
-
- return 'ArbitratorModule';- - |
-
21 | - - -- - | -- - | - - - - -
-
- }- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitratorModule- - |
-
24 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {- - |
-
25 | - - -- - | -- - | - - - - -
-
- _params = abi.decode(_data, (RequestParameters));- - |
-
26 | - - -- - | -- - | - - - - -
-
- }- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitratorModule- - |
-
29 | - - -- - | -- - | - - - - -
-
- function getStatus(bytes32 _disputeId) external view returns (ArbitrationStatus _disputeStatus) {- - |
-
30 | - - -- - | -- - | - - - - -
-
- _disputeStatus = _disputeData[_disputeId];- - |
-
31 | - - -- - | -- - | - - - - -
-
- }- - |
-
32 | - - -- - | -- - | - - - - -- - - - | -
33 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitratorModule- - |
-
34 | - - -- - | -- - | - - - - -
-
- function startResolution(- - |
-
35 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
36 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
37 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
38 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
39 | - - -- - | -- - | - - - - -
-
- ) external onlyOracle {- - |
-
40 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.resolutionModuleData);- - |
-
41 | - - -- - | -- - | - - - - -
-
- if (_params.arbitrator == address(0)) revert ArbitratorModule_InvalidArbitrator();- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- _disputeData[_disputeId] = ArbitrationStatus.Active;- - |
-
44 | - - -- - | -- - | - - - - -
-
- IArbitrator(_params.arbitrator).resolve(_request, _response, _dispute);- - |
-
45 | - - -- - | -- - | - - - - -- - - - | -
46 | - - -- - | -- - | - - - - -
-
- emit ResolutionStarted(_dispute.requestId, _disputeId);- - |
-
47 | - - -- - | -- - | - - - - -
-
- }- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitratorModule- - |
-
50 | - - -- - | -- - | - - - - -
-
- function resolveDispute(- - |
-
51 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
52 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
53 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
54 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
55 | - - -- - | -- - | - - - - -
-
- ) external onlyOracle {- - |
-
56 | - - -- - | -- - | - - - - -
-
- if (ORACLE.disputeStatus(_disputeId) != IOracle.DisputeStatus.Escalated) revert ArbitratorModule_InvalidDisputeId();- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.resolutionModuleData);- - |
-
59 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _status = IArbitrator(_params.arbitrator).getAnswer(_disputeId);- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -- - | -- - | - - - - -
-
- if (_status <= IOracle.DisputeStatus.Escalated) revert ArbitratorModule_InvalidResolutionStatus();- - |
-
62 | - - -- - | -- - | - - - - -
-
- _disputeData[_disputeId] = ArbitrationStatus.Resolved;- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- ORACLE.updateDisputeStatus(_request, _response, _dispute, _status);- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- emit DisputeResolved(_dispute.requestId, _disputeId, _status);- - |
-
67 | - - -- - | -- - | - - - - -
-
- }- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
70 | - - -- - | -- - | - - - - -
-
- function validateParameters(bytes calldata _encodedParameters)- - |
-
71 | - - -- - | -- - | - - - - -
-
- external- - |
-
72 | - - -- - | -- - | - - - - -
-
- pure- - |
-
73 | - - -- - | -- - | - - - - -
-
- override(Module, IModule)- - |
-
74 | - - -- - | -- - | - - - - -
-
- returns (bool _valid)- - |
-
75 | - - -- - | -- - | - - - - -
-
- {- - |
-
76 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_encodedParameters);- - |
-
77 | - - -- - | -- - | - - - - -
-
- _valid = _params.arbitrator != address(0);- - |
-
78 | - - -- - | -- - | - - - - -
-
- }- - |
-
79 | - - -- - | -- - | - - - - -
-
- }- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 60 (1.7%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IBondedResponseModule} from '../../../interfaces/modules/response/IBondedResponseModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';- - |
-
7 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- contract BondedResponseModule is Module, IBondedResponseModule {- - |
-
10 | - - -
-
- √
-
- |
- - - | - - - - -
-
- constructor(IOracle _oracle) Module(_oracle) {}- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
13 | - - -- - | -- - | - - - - -
-
- function moduleName() public pure returns (string memory _moduleName) {- - |
-
14 | - - -- - | -- - | - - - - -
-
- _moduleName = 'BondedResponseModule';- - |
-
15 | - - -- - | -- - | - - - - -
-
- }- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondedResponseModule- - |
-
18 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {- - |
-
19 | - - -- - | -- - | - - - - -
-
- _params = abi.decode(_data, (RequestParameters));- - |
-
20 | - - -- - | -- - | - - - - -
-
- }- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondedResponseModule- - |
-
23 | - - -- - | -- - | - - - - -
-
- function propose(- - |
-
24 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
25 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
26 | - - -- - | -- - | - - - - -
-
- address _sender- - |
-
27 | - - -- - | -- - | - - - - -
-
- ) external onlyOracle {- - |
-
28 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.responseModuleData);- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
30 | - - -- - | -- - | - - - - -
-
- // Cannot propose after the deadline- - |
-
31 | - - -- - | -- - | - - - - -
-
- uint256 _requestCreatedAt = ORACLE.requestCreatedAt(_response.requestId);- - |
-
32 | - - -- - | -- - | - - - - -
-
- if (block.timestamp >= _requestCreatedAt + _params.deadline) revert BondedResponseModule_TooLateToPropose();- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- // Cannot propose to a request with a response, unless the response is being disputed- - |
-
35 | - - -- - | -- - | - - - - -
-
- bytes32[] memory _responseIds = ORACLE.getResponseIds(_response.requestId);- - |
-
36 | - - -- - | -- - | - - - - -
-
- uint256 _responsesLength = _responseIds.length;- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- if (_responsesLength != 0) {- - |
-
39 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = ORACLE.disputeOf(_responseIds[_responsesLength - 1]);- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- // Allowing one undisputed response at a time- - |
-
42 | - - -- - | -- - | - - - - -
-
- if (_disputeId == bytes32(0)) revert BondedResponseModule_AlreadyResponded();- - |
-
43 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _status = ORACLE.disputeStatus(_disputeId);- - |
-
44 | - - -- - | -- - | - - - - -
-
- // If the dispute was lost, we assume the proposed answer was correct.- - |
-
45 | - - -- - | -- - | - - - - -
-
- // DisputeStatus.None should not be reachable due to the previous check.- - |
-
46 | - - -- - | -- - | - - - - -
-
- if (_status == IOracle.DisputeStatus.Lost) revert BondedResponseModule_AlreadyResponded();- - |
-
47 | - - -- - | -- - | - - - - -
-
- }- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -- - | -- - | - - - - -
-
- if (_sender != _response.proposer) {- - |
-
50 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.bond({- - |
-
51 | - - -- - | -- - | - - - - -
-
- _bonder: _response.proposer,- - |
-
52 | - - -- - | -- - | - - - - -
-
- _requestId: _response.requestId,- - |
-
53 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
54 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize,- - |
-
55 | - - -- - | -- - | - - - - -
-
- _sender: _sender- - |
-
56 | - - -- - | -- - | - - - - -
-
- });- - |
-
57 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
58 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.bond({- - |
-
59 | - - -- - | -- - | - - - - -
-
- _bonder: _response.proposer,- - |
-
60 | - - -- - | -- - | - - - - -
-
- _requestId: _response.requestId,- - |
-
61 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
62 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
63 | - - -- - | -- - | - - - - -
-
- });- - |
-
64 | - - -- - | -- - | - - - - -
-
- }- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- emit ResponseProposed(_response.requestId, _response);- - |
-
67 | - - -- - | -- - | - - - - -
-
- }- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondedResponseModule- - |
-
70 | - - -- - | -- - | - - - - -
-
- function finalizeRequest(- - |
-
71 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
72 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
73 | - - -- - | -- - | - - - - -
-
- address _finalizer- - |
-
74 | - - -- - | -- - | - - - - -
-
- ) external override(IBondedResponseModule, Module) onlyOracle {- - |
-
75 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.responseModuleData);- - |
-
76 | - - -- - | -- - | - - - - -- - - - | -
77 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _getId(_request);- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- bool _isModule = ORACLE.allowedModule(_requestId, _finalizer);- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- if (!_isModule && block.timestamp < ORACLE.requestCreatedAt(_requestId) + _params.deadline) {- - |
-
82 | - - -- - | -- - | - - - - -
-
- revert BondedResponseModule_TooEarlyToFinalize();- - |
-
83 | - - -- - | -- - | - - - - -
-
- }- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- uint256 _responseCreatedAt = ORACLE.responseCreatedAt(_getId(_response));- - |
-
86 | - - -- - | -- - | - - - - -
-
- if (_responseCreatedAt != 0) {- - |
-
87 | - - -- - | -- - | - - - - -
-
- if (!_isModule && block.timestamp < _responseCreatedAt + _params.disputeWindow) {- - |
-
88 | - - -- - | -- - | - - - - -
-
- revert BondedResponseModule_TooEarlyToFinalize();- - |
-
89 | - - -- - | -- - | - - - - -
-
- }- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.release({- - |
-
92 | - - -- - | -- - | - - - - -
-
- _bonder: _response.proposer,- - |
-
93 | - - -- - | -- - | - - - - -
-
- _requestId: _requestId,- - |
-
94 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
95 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
96 | - - -- - | -- - | - - - - -
-
- });- - |
-
97 | - - -- - | -- - | - - - - -
-
- }- - |
-
98 | - - -- - | -- - | - - - - -- - - - | -
99 | - - -- - | -- - | - - - - -
-
- emit RequestFinalized(_requestId, _response, _finalizer);- - |
-
100 | - - -- - | -- - | - - - - -
-
- }- - |
-
101 | - - -- - | -- - | - - - - -- - - - | -
102 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IBondedResponseModule- - |
-
103 | - - -- - | -- - | - - - - -
-
- function releaseUnutilizedResponse(IOracle.Request calldata _request, IOracle.Response calldata _response) external {- - |
-
104 | - - -- - | -- - | - - - - -
-
- bytes32 _responseId = _validateResponse(_request, _response);- - |
-
105 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = ORACLE.disputeOf(_responseId);- - |
-
106 | - - -- - | -- - | - - - - -- - - - | -
107 | - - -- - | -- - | - - - - -
-
- if (_disputeId > 0) {- - |
-
108 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _disputeStatus = ORACLE.disputeStatus(_disputeId);- - |
-
109 | - - -- - | -- - | - - - - -
-
- if (_disputeStatus != IOracle.DisputeStatus.Lost && _disputeStatus != IOracle.DisputeStatus.NoResolution) {- - |
-
110 | - - -- - | -- - | - - - - -
-
- revert BondedResponseModule_InvalidReleaseParameters();- - |
-
111 | - - -- - | -- - | - - - - -
-
- }- - |
-
112 | - - -- - | -- - | - - - - -
-
- }- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- bytes32 _finalizedResponseId = ORACLE.finalizedResponseId(_response.requestId);- - |
-
115 | - - -- - | -- - | - - - - -
-
- if (_finalizedResponseId == _responseId || _finalizedResponseId == bytes32(0)) {- - |
-
116 | - - -- - | -- - | - - - - -
-
- revert BondedResponseModule_InvalidReleaseParameters();- - |
-
117 | - - -- - | -- - | - - - - -
-
- }- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_request.responseModuleData);- - |
-
120 | - - -- - | -- - | - - - - -
-
- _params.accountingExtension.release({- - |
-
121 | - - -- - | -- - | - - - - -
-
- _bonder: _response.proposer,- - |
-
122 | - - -- - | -- - | - - - - -
-
- _requestId: _response.requestId,- - |
-
123 | - - -- - | -- - | - - - - -
-
- _token: _params.bondToken,- - |
-
124 | - - -- - | -- - | - - - - -
-
- _amount: _params.bondSize- - |
-
125 | - - -- - | -- - | - - - - -
-
- });- - |
-
126 | - - -- - | -- - | - - - - -- - - - | -
127 | - - -- - | -- - | - - - - -
-
- emit UnutilizedResponseReleased(_response.requestId, _responseId);- - |
-
128 | - - -- - | -- - | - - - - -
-
- }- - |
-
129 | - - -- - | -- - | - - - - -- - - - | -
130 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
131 | - - -- - | -- - | - - - - -
-
- function validateParameters(bytes calldata _encodedParameters)- - |
-
132 | - - -- - | -- - | - - - - -
-
- external- - |
-
133 | - - -- - | -- - | - - - - -
-
- pure- - |
-
134 | - - -- - | -- - | - - - - -
-
- override(Module, IModule)- - |
-
135 | - - -- - | -- - | - - - - -
-
- returns (bool _valid)- - |
-
136 | - - -- - | -- - | - - - - -
-
- {- - |
-
137 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_encodedParameters);- - |
-
138 | - - -- - | -- - | - - - - -
-
- _valid = address(_params.accountingExtension) != address(0) && address(_params.bondToken) != address(0)- - |
-
139 | - - -- - | -- - | - - - - -
-
- && _params.bondSize != 0 && _params.disputeWindow != 0 && _params.deadline != 0;- - |
-
140 | - - -- - | -- - | - - - - -
-
- }- - |
-
141 | - - -- - | -- - | - - - - -
-
- }- - |
-
142 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- interface IArbitrator {- - |
-
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @notice Returns the status of a dispute- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @param _dispute The ID of the dispute- - |
-
10 | - - -- - | -- - | - - - - -
-
- * @return _status The status of the dispute- - |
-
11 | - - -- - | -- - | - - - - -
-
- */- - |
-
12 | - - -- - | -- - | - - - - -
-
- function getAnswer(bytes32 _dispute) external returns (IOracle.DisputeStatus _status);- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- /**- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @notice Resolves a dispute- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @param _request The request object- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @param _response The response object- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute object- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @return _data The data for the dispute resolution- - |
-
20 | - - -- - | -- - | - - - - -
-
- */- - |
-
21 | - - -- - | -- - | - - - - -
-
- function resolve(- - |
-
22 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory _request,- - |
-
23 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory _response,- - |
-
24 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory _dispute- - |
-
25 | - - -- - | -- - | - - - - -
-
- ) external returns (bytes memory _data);- - |
-
26 | - - -- - | -- - | - - - - -
-
- }- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IValidator} from '@defi-wonderland/prophet-core/solidity/interfaces/IValidator.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- /*- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @title AccountingExtension- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @notice Extension allowing users to deposit and bond funds- - |
-
10 | - - -- - | -- - | - - - - -
-
- * to be used for payments and disputes.- - |
-
11 | - - -- - | -- - | - - - - -
-
- */- - |
-
12 | - - -- - | -- - | - - - - -
-
- interface IAccountingExtension is IValidator {- - |
-
13 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
14 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
15 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /**- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @notice A user deposited tokens into the accounting extension- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @param _depositor The user who deposited the tokens- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token deposited by the user- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` deposited- - |
-
22 | - - -- - | -- - | - - - - -
-
- */- - |
-
23 | - - -- - | -- - | - - - - -
-
- event Deposited(address indexed _depositor, IERC20 indexed _token, uint256 _amount);- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- /**- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @notice A user withdrew tokens from the accounting extension- - |
-
27 | - - -- - | -- - | - - - - -
-
- * @param _withdrawer The user who withdrew the tokens- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token withdrawn by the user- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` withdrawn- - |
-
30 | - - -- - | -- - | - - - - -
-
- */- - |
-
31 | - - -- - | -- - | - - - - -
-
- event Withdrew(address indexed _withdrawer, IERC20 indexed _token, uint256 _amount);- - |
-
32 | - - -- - | -- - | - - - - -- - - - | -
33 | - - -- - | -- - | - - - - -
-
- /**- - |
-
34 | - - -- - | -- - | - - - - -
-
- * @notice A payment between users has been made- - |
-
35 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
36 | - - -- - | -- - | - - - - -
-
- * @param _beneficiary The user receiving the tokens- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @param _payer The user who is getting its tokens transferred- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being transferred- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` transferred- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- event Paid(- - |
-
42 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, address indexed _beneficiary, address indexed _payer, IERC20 _token, uint256 _amount- - |
-
43 | - - -- - | -- - | - - - - -
-
- );- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- /**- - |
-
46 | - - -- - | -- - | - - - - -
-
- * @notice User's funds have been bonded- - |
-
47 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
48 | - - -- - | -- - | - - - - -
-
- * @param _bonder The user who is getting its tokens bonded- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being bonded- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` bonded- - |
-
51 | - - -- - | -- - | - - - - -
-
- */- - |
-
52 | - - -- - | -- - | - - - - -
-
- event Bonded(bytes32 indexed _requestId, address indexed _bonder, IERC20 indexed _token, uint256 _amount);- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- /**- - |
-
55 | - - -- - | -- - | - - - - -
-
- * @notice User's funds have been released- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
57 | - - -- - | -- - | - - - - -
-
- * @param _beneficiary The user who is getting its tokens released- - |
-
58 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being released- - |
-
59 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` released- - |
-
60 | - - -- - | -- - | - - - - -
-
- */- - |
-
61 | - - -- - | -- - | - - - - -
-
- event Released(bytes32 indexed _requestId, address indexed _beneficiary, IERC20 indexed _token, uint256 _amount);- - |
-
62 | - - -- - | -- - | - - - - -- - - - | -
63 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
64 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
65 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
66 | - - -- - | -- - | - - - - -- - - - | -
67 | - - -- - | -- - | - - - - -
-
- /**- - |
-
68 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when depositing tokens with a fee on transfer- - |
-
69 | - - -- - | -- - | - - - - -
-
- */- - |
-
70 | - - -- - | -- - | - - - - -
-
- error AccountingExtension_FeeOnTransferToken();- - |
-
71 | - - -- - | -- - | - - - - -- - - - | -
72 | - - -- - | -- - | - - - - -
-
- /**- - |
-
73 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the account doesn't have enough balance to bond/withdraw- - |
-
74 | - - -- - | -- - | - - - - -
-
- * or not enough bonded to release/pay- - |
-
75 | - - -- - | -- - | - - - - -
-
- */- - |
-
76 | - - -- - | -- - | - - - - -
-
- error AccountingExtension_InsufficientFunds();- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- /**- - |
-
79 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the module bonding user tokens hasn't been approved by the user.- - |
-
80 | - - -- - | -- - | - - - - -
-
- */- - |
-
81 | - - -- - | -- - | - - - - -
-
- error AccountingExtension_NotAllowed();- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- /**- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when an `onlyAllowedModule` function is called by something- - |
-
85 | - - -- - | -- - | - - - - -
-
- * else than a module being used in the corresponding request- - |
-
86 | - - -- - | -- - | - - - - -
-
- */- - |
-
87 | - - -- - | -- - | - - - - -
-
- error AccountingExtension_UnauthorizedModule();- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- /**- - |
-
90 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when an `onlyParticipant` function is called with an address- - |
-
91 | - - -- - | -- - | - - - - -
-
- * that is not part of the request.- - |
-
92 | - - -- - | -- - | - - - - -
-
- */- - |
-
93 | - - -- - | -- - | - - - - -
-
- error AccountingExtension_UnauthorizedUser();- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
96 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
97 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
98 | - - -- - | -- - | - - - - -- - - - | -
99 | - - -- - | -- - | - - - - -
-
- /**- - |
-
100 | - - -- - | -- - | - - - - -
-
- * @notice Returns the amount of a token a user has bonded- - |
-
101 | - - -- - | -- - | - - - - -
-
- * @param _user The address of the user with bonded tokens- - |
-
102 | - - -- - | -- - | - - - - -
-
- * @param _bondToken The token bonded- - |
-
103 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request the user bonded for- - |
-
104 | - - -- - | -- - | - - - - -
-
- * @return _amount The amount of `_bondToken` bonded- - |
-
105 | - - -- - | -- - | - - - - -
-
- */- - |
-
106 | - - -- - | -- - | - - - - -
-
- function bondedAmountOf(address _user, IERC20 _bondToken, bytes32 _requestId) external returns (uint256 _amount);- - |
-
107 | - - -- - | -- - | - - - - -- - - - | -
108 | - - -- - | -- - | - - - - -
-
- /**- - |
-
109 | - - -- - | -- - | - - - - -
-
- * @notice Returns the amount of a token a user has deposited- - |
-
110 | - - -- - | -- - | - - - - -
-
- * @param _user The address of the user with deposited tokens- - |
-
111 | - - -- - | -- - | - - - - -
-
- * @param _token The token deposited- - |
-
112 | - - -- - | -- - | - - - - -
-
- * @return _amount The amount of `_token` deposited- - |
-
113 | - - -- - | -- - | - - - - -
-
- */- - |
-
114 | - - -- - | -- - | - - - - -
-
- function balanceOf(address _user, IERC20 _token) external view returns (uint256 _amount);- - |
-
115 | - - -- - | -- - | - - - - -- - - - | -
116 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
117 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
118 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
119 | - - -- - | -- - | - - - - -- - - - | -
120 | - - -- - | -- - | - - - - -
-
- /**- - |
-
121 | - - -- - | -- - | - - - - -
-
- * @notice Transfers tokens from a user and updates his virtual balance- - |
-
122 | - - -- - | -- - | - - - - -
-
- * @dev The user must have approved the accounting extension to transfer the tokens.- - |
-
123 | - - -- - | -- - | - - - - -
-
- * The transfer must not take a fee (deflationary tokens can lead to unexpected behavior).- - |
-
124 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being deposited- - |
-
125 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` to deposit- - |
-
126 | - - -- - | -- - | - - - - -
-
- */- - |
-
127 | - - -- - | -- - | - - - - -
-
- function deposit(IERC20 _token, uint256 _amount) external;- - |
-
128 | - - -- - | -- - | - - - - -- - - - | -
129 | - - -- - | -- - | - - - - -
-
- /**- - |
-
130 | - - -- - | -- - | - - - - -
-
- * @notice Allows an user to withdraw deposited tokens- - |
-
131 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being withdrawn- - |
-
132 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` to withdraw- - |
-
133 | - - -- - | -- - | - - - - -
-
- */- - |
-
134 | - - -- - | -- - | - - - - -
-
- function withdraw(IERC20 _token, uint256 _amount) external;- - |
-
135 | - - -- - | -- - | - - - - -- - - - | -
136 | - - -- - | -- - | - - - - -
-
- /**- - |
-
137 | - - -- - | -- - | - - - - -
-
- * @notice Allows a allowed module to transfer bonded tokens from one user to another- - |
-
138 | - - -- - | -- - | - - - - -
-
- * @dev Only the virtual balances in the accounting extension are modified. The token contract- - |
-
139 | - - -- - | -- - | - - - - -
-
- * is not called nor its balances modified.- - |
-
140 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request handling the user's tokens- - |
-
141 | - - -- - | -- - | - - - - -
-
- * @param _payer The address of the user paying the tokens- - |
-
142 | - - -- - | -- - | - - - - -
-
- * @param _receiver The address of the user receiving the tokens- - |
-
143 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being transferred- - |
-
144 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` being transferred- - |
-
145 | - - -- - | -- - | - - - - -
-
- */- - |
-
146 | - - -- - | -- - | - - - - -
-
- function pay(bytes32 _requestId, address _payer, address _receiver, IERC20 _token, uint256 _amount) external;- - |
-
147 | - - -- - | -- - | - - - - -- - - - | -
148 | - - -- - | -- - | - - - - -
-
- /**- - |
-
149 | - - -- - | -- - | - - - - -
-
- * @notice Allows a allowed module to bond a user's tokens for a request- - |
-
150 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user to bond tokens for- - |
-
151 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request the user is bonding for- - |
-
152 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being bonded- - |
-
153 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` to bond- - |
-
154 | - - -- - | -- - | - - - - -
-
- */- - |
-
155 | - - -- - | -- - | - - - - -
-
- function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;- - |
-
156 | - - -- - | -- - | - - - - -- - - - | -
157 | - - -- - | -- - | - - - - -
-
- /**- - |
-
158 | - - -- - | -- - | - - - - -
-
- * @notice Allows a valid module to bond a user's tokens for a request- - |
-
159 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user to bond tokens for- - |
-
160 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request the user is bonding for- - |
-
161 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being bonded- - |
-
162 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` to bond- - |
-
163 | - - -- - | -- - | - - - - -
-
- * @param _sender The address starting the propose call on the Oracle- - |
-
164 | - - -- - | -- - | - - - - -
-
- */- - |
-
165 | - - -- - | -- - | - - - - -
-
- function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount, address _sender) external;- - |
-
166 | - - -- - | -- - | - - - - -- - - - | -
167 | - - -- - | -- - | - - - - -
-
- /**- - |
-
168 | - - -- - | -- - | - - - - -
-
- * @notice Allows a valid module to release a user's tokens- - |
-
169 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user to release tokens for- - |
-
170 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request where the tokens were bonded- - |
-
171 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being released- - |
-
172 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` to release- - |
-
173 | - - -- - | -- - | - - - - -
-
- */- - |
-
174 | - - -- - | -- - | - - - - -
-
- function release(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;- - |
-
175 | - - -- - | -- - | - - - - -- - - - | -
176 | - - -- - | -- - | - - - - -
-
- /**- - |
-
177 | - - -- - | -- - | - - - - -
-
- * @notice Allows a user to approve a module for bonding tokens- - |
-
178 | - - -- - | -- - | - - - - -
-
- * @param _module The address of the module to be approved- - |
-
179 | - - -- - | -- - | - - - - -
-
- */- - |
-
180 | - - -- - | -- - | - - - - -
-
- function approveModule(address _module) external;- - |
-
181 | - - -- - | -- - | - - - - -- - - - | -
182 | - - -- - | -- - | - - - - -
-
- /**- - |
-
183 | - - -- - | -- - | - - - - -
-
- * @notice Allows a user to revoke a module's approval for bonding tokens- - |
-
184 | - - -- - | -- - | - - - - -
-
- * @param _module The address of the module to be revoked- - |
-
185 | - - -- - | -- - | - - - - -
-
- */- - |
-
186 | - - -- - | -- - | - - - - -
-
- function revokeModule(address _module) external;- - |
-
187 | - - -- - | -- - | - - - - -- - - - | -
188 | - - -- - | -- - | - - - - -
-
- /**- - |
-
189 | - - -- - | -- - | - - - - -
-
- * @notice Returns a list of all modules a user has approved- - |
-
190 | - - -- - | -- - | - - - - -
-
- * @param _user The address of the user- - |
-
191 | - - -- - | -- - | - - - - -
-
- * @return _approvedModules The array of all modules approved by the user- - |
-
192 | - - -- - | -- - | - - - - -
-
- */- - |
-
193 | - - -- - | -- - | - - - - -
-
- function approvedModules(address _user) external view returns (address[] memory _approvedModules);- - |
-
194 | - - -- - | -- - | - - - - -
-
- }- - |
-
195 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IBondEscalationModule} from '../modules/dispute/IBondEscalationModule.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IAccountingExtension} from './IAccountingExtension.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
8 | - - -- - | -- - | - - - - -
-
- import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @title BondEscalationAccounting- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @notice Extension allowing users to deposit and pledge funds to be used for bond escalation- - |
-
13 | - - -- - | -- - | - - - - -
-
- */- - |
-
14 | - - -- - | -- - | - - - - -
-
- interface IBondEscalationAccounting is IAccountingExtension {- - |
-
15 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
16 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
17 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
18 | - - -- - | -- - | - - - - -- - - - | -
19 | - - -- - | -- - | - - - - -
-
- /**- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @notice A user pledged tokens for one of the sides of a dispute- - |
-
21 | - - -- - | -- - | - - - - -
-
- *- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @param _pledger The user who pledged the tokens- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being pledged- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` pledged by the user- - |
-
27 | - - -- - | -- - | - - - - -
-
- */- - |
-
28 | - - -- - | -- - | - - - - -
-
- event Pledged(- - |
-
29 | - - -- - | -- - | - - - - -
-
- address indexed _pledger, bytes32 indexed _requestId, bytes32 indexed _disputeId, IERC20 _token, uint256 _amount- - |
-
30 | - - -- - | -- - | - - - - -
-
- );- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /**- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @notice The pledgers of the winning side of a dispute have been paid- - |
-
34 | - - -- - | -- - | - - - - -
-
- *- - |
-
35 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
36 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @param _winningPledgers The users who got paid for pledging for the winning side- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being paid out- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _amountPerPledger The amount of `_token` paid to each of the winning pledgers- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- event WinningPledgersPaid(- - |
-
42 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId,- - |
-
43 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _disputeId,- - |
-
44 | - - -- - | -- - | - - - - -
-
- address[] indexed _winningPledgers,- - |
-
45 | - - -- - | -- - | - - - - -
-
- IERC20 _token,- - |
-
46 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger- - |
-
47 | - - -- - | -- - | - - - - -
-
- );- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -- - | -- - | - - - - -
-
- /**- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @notice A bond escalation has been settled- - |
-
51 | - - -- - | -- - | - - - - -
-
- *- - |
-
52 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being paid out- - |
-
55 | - - -- - | -- - | - - - - -
-
- * @param _amountPerPledger The amount of `_token` to be paid for each winning pledgers- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @param _winningPledgersLength The number of winning pledgers- - |
-
57 | - - -- - | -- - | - - - - -
-
- */- - |
-
58 | - - -- - | -- - | - - - - -
-
- event BondEscalationSettled(- - |
-
59 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId, bytes32 _disputeId, IERC20 _token, uint256 _amountPerPledger, uint256 _winningPledgersLength- - |
-
60 | - - -- - | -- - | - - - - -
-
- );- - |
-
61 | - - -- - | -- - | - - - - -- - - - | -
62 | - - -- - | -- - | - - - - -
-
- /**- - |
-
63 | - - -- - | -- - | - - - - -
-
- * @notice A pledge has been released back to the user- - |
-
64 | - - -- - | -- - | - - - - -
-
- *- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @param _pledger The user who is getting their tokens released- - |
-
68 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being released- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` released- - |
-
70 | - - -- - | -- - | - - - - -
-
- */- - |
-
71 | - - -- - | -- - | - - - - -
-
- event PledgeReleased(- - |
-
72 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, bytes32 indexed _disputeId, address indexed _pledger, IERC20 _token, uint256 _amount- - |
-
73 | - - -- - | -- - | - - - - -
-
- );- - |
-
74 | - - -- - | -- - | - - - - -- - - - | -
75 | - - -- - | -- - | - - - - -
-
- /**- - |
-
76 | - - -- - | -- - | - - - - -
-
- * @notice A user claimed their reward for pledging for the winning side of a dispute- - |
-
77 | - - -- - | -- - | - - - - -
-
- *- - |
-
78 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
79 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
80 | - - -- - | -- - | - - - - -
-
- * @param _pledger The user who claimed their reward- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being paid out- - |
-
82 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of `_token` paid to the pledger- - |
-
83 | - - -- - | -- - | - - - - -
-
- */- - |
-
84 | - - -- - | -- - | - - - - -
-
- event EscalationRewardClaimed(- - |
-
85 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, bytes32 indexed _disputeId, address indexed _pledger, IERC20 _token, uint256 _amount- - |
-
86 | - - -- - | -- - | - - - - -
-
- );- - |
-
87 | - - -- - | -- - | - - - - -- - - - | -
88 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
89 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
90 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
91 | - - -- - | -- - | - - - - -- - - - | -
92 | - - -- - | -- - | - - - - -
-
- /**- - |
-
93 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user tries to claim their pledge for an escalation that was already claimed- - |
-
94 | - - -- - | -- - | - - - - -
-
- */- - |
-
95 | - - -- - | -- - | - - - - -
-
- error BondEscalationAccounting_AlreadyClaimed();- - |
-
96 | - - -- - | -- - | - - - - -- - - - | -
97 | - - -- - | -- - | - - - - -
-
- /**- - |
-
98 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user tries to claim their pledge for an escalation that wasn't finished yet- - |
-
99 | - - -- - | -- - | - - - - -
-
- */- - |
-
100 | - - -- - | -- - | - - - - -
-
- error BondEscalationAccounting_NoEscalationResult();- - |
-
101 | - - -- - | -- - | - - - - -- - - - | -
102 | - - -- - | -- - | - - - - -
-
- /**- - |
-
103 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user doesn't have enough funds to pledge- - |
-
104 | - - -- - | -- - | - - - - -
-
- */- - |
-
105 | - - -- - | -- - | - - - - -
-
- error BondEscalationAccounting_InsufficientFunds();- - |
-
106 | - - -- - | -- - | - - - - -- - - - | -
107 | - - -- - | -- - | - - - - -
-
- /**- - |
-
108 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to settle an already settled escalation- - |
-
109 | - - -- - | -- - | - - - - -
-
- */- - |
-
110 | - - -- - | -- - | - - - - -
-
- error BondEscalationAccounting_AlreadySettled();- - |
-
111 | - - -- - | -- - | - - - - -- - - - | -
112 | - - -- - | -- - | - - - - -
-
- /**- - |
-
113 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when caller is not authorized- - |
-
114 | - - -- - | -- - | - - - - -
-
- */- - |
-
115 | - - -- - | -- - | - - - - -
-
- error BondEscalationAccounting_UnauthorizedCaller();- - |
-
116 | - - -- - | -- - | - - - - -- - - - | -
117 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
118 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
119 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
120 | - - -- - | -- - | - - - - -- - - - | -
121 | - - -- - | -- - | - - - - -
-
- /**- - |
-
122 | - - -- - | -- - | - - - - -
-
- * @notice Contains the data of the result of an escalation. Is used by users to claim their pledges- - |
-
123 | - - -- - | -- - | - - - - -
-
- * @param requestId The ID of the bond-escalated request- - |
-
124 | - - -- - | -- - | - - - - -
-
- * @param token The address of the token being paid out- - |
-
125 | - - -- - | -- - | - - - - -
-
- * @param amountPerPledger The amount of token paid to each of the winning pledgers- - |
-
126 | - - -- - | -- - | - - - - -
-
- * @param bondEscalationModule The address of the bond escalation module that was used- - |
-
127 | - - -- - | -- - | - - - - -
-
- */- - |
-
128 | - - -- - | -- - | - - - - -
-
- struct EscalationResult {- - |
-
129 | - - -- - | -- - | - - - - -
-
- bytes32 requestId;- - |
-
130 | - - -- - | -- - | - - - - -
-
- IERC20 token;- - |
-
131 | - - -- - | -- - | - - - - -
-
- uint256 amountPerPledger;- - |
-
132 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule bondEscalationModule;- - |
-
133 | - - -- - | -- - | - - - - -
-
- }- - |
-
134 | - - -- - | -- - | - - - - -- - - - | -
135 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
136 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
137 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
138 | - - -- - | -- - | - - - - -- - - - | -
139 | - - -- - | -- - | - - - - -
-
- /**- - |
-
140 | - - -- - | -- - | - - - - -
-
- * @notice The amount pledged by the given pledger in the given dispute of the given request- - |
-
141 | - - -- - | -- - | - - - - -
-
- *- - |
-
142 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
143 | - - -- - | -- - | - - - - -
-
- * @param _token Address of the token being pledged- - |
-
144 | - - -- - | -- - | - - - - -
-
- * @return _amountPledged The amount of pledged tokens- - |
-
145 | - - -- - | -- - | - - - - -
-
- */- - |
-
146 | - - -- - | -- - | - - - - -
-
- function pledges(bytes32 _disputeId, IERC20 _token) external returns (uint256 _amountPledged);- - |
-
147 | - - -- - | -- - | - - - - -- - - - | -
148 | - - -- - | -- - | - - - - -
-
- /**- - |
-
149 | - - -- - | -- - | - - - - -
-
- * @notice The result of the given dispute- - |
-
150 | - - -- - | -- - | - - - - -
-
- *- - |
-
151 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
152 | - - -- - | -- - | - - - - -
-
- * @return _requestId The ID of the bond-escalated request- - |
-
153 | - - -- - | -- - | - - - - -
-
- * @return _token Address of the token being paid as a reward for winning the bond escalation- - |
-
154 | - - -- - | -- - | - - - - -
-
- * @return _amountPerPledger Amount of `_token` to be rewarded to each of the winning pledgers- - |
-
155 | - - -- - | -- - | - - - - -
-
- * @return _bondEscalationModule The address of the bond escalation module that was used- - |
-
156 | - - -- - | -- - | - - - - -
-
- */- - |
-
157 | - - -- - | -- - | - - - - -
-
- function escalationResults(bytes32 _disputeId)- - |
-
158 | - - -- - | -- - | - - - - -
-
- external- - |
-
159 | - - -- - | -- - | - - - - -
-
- returns (bytes32 _requestId, IERC20 _token, uint256 _amountPerPledger, IBondEscalationModule _bondEscalationModule);- - |
-
160 | - - -- - | -- - | - - - - -- - - - | -
161 | - - -- - | -- - | - - - - -
-
- /**- - |
-
162 | - - -- - | -- - | - - - - -
-
- * @notice True if the given pledger has claimed their reward for the given dispute- - |
-
163 | - - -- - | -- - | - - - - -
-
- *- - |
-
164 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
165 | - - -- - | -- - | - - - - -
-
- * @param _pledger Address of the pledger- - |
-
166 | - - -- - | -- - | - - - - -
-
- * @return _claimed True if the pledger has claimed their reward- - |
-
167 | - - -- - | -- - | - - - - -
-
- */- - |
-
168 | - - -- - | -- - | - - - - -
-
- function pledgerClaimed(bytes32 _requestId, address _pledger) external returns (bool _claimed);- - |
-
169 | - - -- - | -- - | - - - - -- - - - | -
170 | - - -- - | -- - | - - - - -
-
- /**- - |
-
171 | - - -- - | -- - | - - - - -
-
- * @notice Checks whether an address is an authorized caller.- - |
-
172 | - - -- - | -- - | - - - - -
-
- *- - |
-
173 | - - -- - | -- - | - - - - -
-
- * @param _caller The address to check- - |
-
174 | - - -- - | -- - | - - - - -
-
- * @return _authorized True if the address is authorized, false otherwise- - |
-
175 | - - -- - | -- - | - - - - -
-
- */- - |
-
176 | - - -- - | -- - | - - - - -
-
- function authorizedCallers(address _caller) external returns (bool _authorized);- - |
-
177 | - - -- - | -- - | - - - - -- - - - | -
178 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
179 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
180 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
181 | - - -- - | -- - | - - - - -- - - - | -
182 | - - -- - | -- - | - - - - -
-
- /**- - |
-
183 | - - -- - | -- - | - - - - -
-
- * @notice Pledges the given amount of token to the provided dispute id of the provided request id- - |
-
184 | - - -- - | -- - | - - - - -
-
- *- - |
-
185 | - - -- - | -- - | - - - - -
-
- * @dev This function must be called by an allowed module- - |
-
186 | - - -- - | -- - | - - - - -
-
- *- - |
-
187 | - - -- - | -- - | - - - - -
-
- * @param _pledger Address of the pledger- - |
-
188 | - - -- - | -- - | - - - - -
-
- * @param _request The bond-escalated request- - |
-
189 | - - -- - | -- - | - - - - -
-
- * @param _dispute The bond-escalated dispute- - |
-
190 | - - -- - | -- - | - - - - -
-
- * @param _token Address of the token being paid as a reward for winning the bond escalation- - |
-
191 | - - -- - | -- - | - - - - -
-
- * @param _amount Amount of token to pledge- - |
-
192 | - - -- - | -- - | - - - - -
-
- */- - |
-
193 | - - -- - | -- - | - - - - -
-
- function pledge(- - |
-
194 | - - -- - | -- - | - - - - -
-
- address _pledger,- - |
-
195 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
196 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
197 | - - -- - | -- - | - - - - -
-
- IERC20 _token,- - |
-
198 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
199 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
200 | - - -- - | -- - | - - - - -- - - - | -
201 | - - -- - | -- - | - - - - -
-
- /**- - |
-
202 | - - -- - | -- - | - - - - -
-
- * @notice Updates the accounting of the given dispute to reflect the result of the bond escalation- - |
-
203 | - - -- - | -- - | - - - - -
-
- * @dev This function must be called by an allowed module- - |
-
204 | - - -- - | -- - | - - - - -
-
- *- - |
-
205 | - - -- - | -- - | - - - - -
-
- * @param _request The bond-escalated request- - |
-
206 | - - -- - | -- - | - - - - -
-
- * @param _dispute The bond-escalated dispute- - |
-
207 | - - -- - | -- - | - - - - -
-
- * @param _token Address of the token being paid as a reward for winning the bond escalation- - |
-
208 | - - -- - | -- - | - - - - -
-
- * @param _amountPerPledger Amount of `_token` to be rewarded to each of the winning pledgers- - |
-
209 | - - -- - | -- - | - - - - -
-
- * @param _winningPledgersLength Amount of pledges that won the dispute- - |
-
210 | - - -- - | -- - | - - - - -
-
- */- - |
-
211 | - - -- - | -- - | - - - - -
-
- function onSettleBondEscalation(- - |
-
212 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
213 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
214 | - - -- - | -- - | - - - - -
-
- IERC20 _token,- - |
-
215 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger,- - |
-
216 | - - -- - | -- - | - - - - -
-
- uint256 _winningPledgersLength- - |
-
217 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
218 | - - -- - | -- - | - - - - -- - - - | -
219 | - - -- - | -- - | - - - - -
-
- /**- - |
-
220 | - - -- - | -- - | - - - - -
-
- * @notice Releases a given amount of funds to the pledger- - |
-
221 | - - -- - | -- - | - - - - -
-
- *- - |
-
222 | - - -- - | -- - | - - - - -
-
- * @dev This function must be called by an allowed module- - |
-
223 | - - -- - | -- - | - - - - -
-
- *- - |
-
224 | - - -- - | -- - | - - - - -
-
- * @param _request The bond-escalated request- - |
-
225 | - - -- - | -- - | - - - - -
-
- * @param _dispute The bond-escalated dispute- - |
-
226 | - - -- - | -- - | - - - - -
-
- * @param _pledger Address of the pledger- - |
-
227 | - - -- - | -- - | - - - - -
-
- * @param _token Address of the token to be released- - |
-
228 | - - -- - | -- - | - - - - -
-
- * @param _amount Amount of `_token` to be released to the pledger- - |
-
229 | - - -- - | -- - | - - - - -
-
- */- - |
-
230 | - - -- - | -- - | - - - - -
-
- function releasePledge(- - |
-
231 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
232 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
233 | - - -- - | -- - | - - - - -
-
- address _pledger,- - |
-
234 | - - -- - | -- - | - - - - -
-
- IERC20 _token,- - |
-
235 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
236 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
237 | - - -- - | -- - | - - - - -- - - - | -
238 | - - -- - | -- - | - - - - -
-
- /**- - |
-
239 | - - -- - | -- - | - - - - -
-
- * @notice Claims the reward for the pledger the given dispute- - |
-
240 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
241 | - - -- - | -- - | - - - - -
-
- * @param _pledger Address of the pledger to claim the rewards- - |
-
242 | - - -- - | -- - | - - - - -
-
- */- - |
-
243 | - - -- - | -- - | - - - - -
-
- function claimEscalationReward(bytes32 _disputeId, address _pledger) external;- - |
-
244 | - - -- - | -- - | - - - - -
-
- }- - |
-
245 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IDisputeModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/dispute/IDisputeModule.sol';- - |
-
6 | - - -- - | -- - | - - - - -
-
- import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- import {IBondEscalationAccounting} from '../../extensions/IBondEscalationAccounting.sol';- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @title BondEscalationModule- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing users to have the first dispute of a request go through the bond escalation mechanism.- - |
-
13 | - - -- - | -- - | - - - - -
-
- */- - |
-
14 | - - -- - | -- - | - - - - -
-
- interface IBondEscalationModule is IDisputeModule {- - |
-
15 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
16 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
17 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
18 | - - -- - | -- - | - - - - -- - - - | -
19 | - - -- - | -- - | - - - - -
-
- /**- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @notice A pledge has been made in favor of a dispute.- - |
-
21 | - - -- - | -- - | - - - - -
-
- *- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute the pledger is pledging in favor of.- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param _pledger The address of the pledger.- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount pledged.- - |
-
25 | - - -- - | -- - | - - - - -
-
- */- - |
-
26 | - - -- - | -- - | - - - - -
-
- event PledgedForDispute(bytes32 indexed _disputeId, address indexed _pledger, uint256 indexed _amount);- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- /**- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @notice A pledge has been made against a dispute.- - |
-
30 | - - -- - | -- - | - - - - -
-
- *- - |
-
31 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute the pledger is pledging against.- - |
-
32 | - - -- - | -- - | - - - - -
-
- * @param _pledger The address of the pledger.- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount pledged.- - |
-
34 | - - -- - | -- - | - - - - -
-
- */- - |
-
35 | - - -- - | -- - | - - - - -
-
- event PledgedAgainstDispute(bytes32 indexed _disputeId, address indexed _pledger, uint256 indexed _amount);- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- /**- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @notice The status of the bond escalation mechanism has been updated.- - |
-
39 | - - -- - | -- - | - - - - -
-
- *- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request associated with the bond escalation mechanism.- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute going through the bond escalation mechanism.- - |
-
42 | - - -- - | -- - | - - - - -
-
- * @param _status The new status.- - |
-
43 | - - -- - | -- - | - - - - -
-
- */- - |
-
44 | - - -- - | -- - | - - - - -
-
- event BondEscalationStatusUpdated(- - |
-
45 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, bytes32 indexed _disputeId, BondEscalationStatus _status- - |
-
46 | - - -- - | -- - | - - - - -
-
- );- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
49 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
50 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
51 | - - -- - | -- - | - - - - -- - - - | -
52 | - - -- - | -- - | - - - - -
-
- /**- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to escalate a dispute going through the bond escalation module before its deadline.- - |
-
54 | - - -- - | -- - | - - - - -
-
- */- - |
-
55 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_BondEscalationNotOver();- - |
-
56 | - - -- - | -- - | - - - - -
-
- /**- - |
-
57 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to pledge for a dispute that is not going through the bond escalation mechanism.- - |
-
58 | - - -- - | -- - | - - - - -
-
- */- - |
-
59 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_InvalidDispute();- - |
-
60 | - - -- - | -- - | - - - - -
-
- /**- - |
-
61 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the number of escalation pledges of a given dispute has reached its maximum.- - |
-
62 | - - -- - | -- - | - - - - -
-
- */- - |
-
63 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_MaxNumberOfEscalationsReached();- - |
-
64 | - - -- - | -- - | - - - - -
-
- /**- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to settle a dispute that went through the bond escalation when it's not active.- - |
-
66 | - - -- - | -- - | - - - - -
-
- */- - |
-
67 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_BondEscalationCantBeSettled();- - |
-
68 | - - -- - | -- - | - - - - -
-
- /**- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to settle a bond escalation process that is not tied.- - |
-
70 | - - -- - | -- - | - - - - -
-
- */- - |
-
71 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_ShouldBeEscalated();- - |
-
72 | - - -- - | -- - | - - - - -
-
- /**- - |
-
73 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to break a tie after the tying buffer has started.- - |
-
74 | - - -- - | -- - | - - - - -
-
- */- - |
-
75 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_CannotBreakTieDuringTyingBuffer();- - |
-
76 | - - -- - | -- - | - - - - -
-
- /**- - |
-
77 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the max number of escalations or the bond size is set to 0.- - |
-
78 | - - -- - | -- - | - - - - -
-
- */- - |
-
79 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_ZeroValue();- - |
-
80 | - - -- - | -- - | - - - - -
-
- /**- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to pledge after the bond escalation deadline.- - |
-
82 | - - -- - | -- - | - - - - -
-
- */- - |
-
83 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_BondEscalationOver();- - |
-
84 | - - -- - | -- - | - - - - -
-
- /**- - |
-
85 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to escalate a dispute going through the bond escalation process that is not tied- - |
-
86 | - - -- - | -- - | - - - - -
-
- * or that is not active.- - |
-
87 | - - -- - | -- - | - - - - -
-
- */- - |
-
88 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_NotEscalatable();- - |
-
89 | - - -- - | -- - | - - - - -
-
- /**- - |
-
90 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to pledge for a dispute that does not exist- - |
-
91 | - - -- - | -- - | - - - - -
-
- */- - |
-
92 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_DisputeDoesNotExist();- - |
-
93 | - - -- - | -- - | - - - - -
-
- /**- - |
-
94 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to surpass the number of pledges of the other side by more than 1 in the bond escalation mechanism.- - |
-
95 | - - -- - | -- - | - - - - -
-
- */- - |
-
96 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_CanOnlySurpassByOnePledge();- - |
-
97 | - - -- - | -- - | - - - - -
-
- /**- - |
-
98 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to dispute a response after the dispute period expired.- - |
-
99 | - - -- - | -- - | - - - - -
-
- */- - |
-
100 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_DisputeWindowOver();- - |
-
101 | - - -- - | -- - | - - - - -
-
- /**- - |
-
102 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to set up a request with invalid bond size or maximum amount of escalations.- - |
-
103 | - - -- - | -- - | - - - - -
-
- */- - |
-
104 | - - -- - | -- - | - - - - -
-
- error BondEscalationModule_InvalidEscalationParameters();- - |
-
105 | - - -- - | -- - | - - - - -- - - - | -
106 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
107 | - - -- - | -- - | - - - - -
-
- ENUMS- - |
-
108 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
109 | - - -- - | -- - | - - - - -- - - - | -
110 | - - -- - | -- - | - - - - -
-
- /**- - |
-
111 | - - -- - | -- - | - - - - -
-
- * @notice Enum holding all the possible statuses of a dispute going through the bond escalation mechanism.- - |
-
112 | - - -- - | -- - | - - - - -
-
- * @param None Dispute is not going through the bond escalation mechanism.- - |
-
113 | - - -- - | -- - | - - - - -
-
- * @param Active Dispute is going through the bond escalation mechanism.- - |
-
114 | - - -- - | -- - | - - - - -
-
- * @param Escalated Dispute is going through the bond escalation mechanism and has been escalated.- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @param DisputerLost An escalated dispute has been settled and the disputer lost.- - |
-
116 | - - -- - | -- - | - - - - -
-
- * @param DisputerWon An escalated dispute has been settled and the disputer won.- - |
-
117 | - - -- - | -- - | - - - - -
-
- */- - |
-
118 | - - -- - | -- - | - - - - -
-
- enum BondEscalationStatus {- - |
-
119 | - - -- - | -- - | - - - - -
-
- None,- - |
-
120 | - - -- - | -- - | - - - - -
-
- Active,- - |
-
121 | - - -- - | -- - | - - - - -
-
- Escalated,- - |
-
122 | - - -- - | -- - | - - - - -
-
- DisputerLost,- - |
-
123 | - - -- - | -- - | - - - - -
-
- DisputerWon- - |
-
124 | - - -- - | -- - | - - - - -
-
- }- - |
-
125 | - - -- - | -- - | - - - - -- - - - | -
126 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
127 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
128 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
129 | - - -- - | -- - | - - - - -- - - - | -
130 | - - -- - | -- - | - - - - -
-
- /**- - |
-
131 | - - -- - | -- - | - - - - -
-
- * @notice Parameters of the request as stored in the module- - |
-
132 | - - -- - | -- - | - - - - -
-
- *- - |
-
133 | - - -- - | -- - | - - - - -
-
- * @param accountingExtension Address of the accounting extension associated with the given request- - |
-
134 | - - -- - | -- - | - - - - -
-
- * @param bondToken Address of the token associated with the given request- - |
-
135 | - - -- - | -- - | - - - - -
-
- * @param bondSize Amount to bond to dispute or propose an answer for the given request- - |
-
136 | - - -- - | -- - | - - - - -
-
- * @param maxNumberOfEscalations Maximum allowed escalations or pledges for each side during the bond escalation process- - |
-
137 | - - -- - | -- - | - - - - -
-
- * @param bondEscalationDeadline Number of seconds after dispute creation required to- - |
-
138 | - - -- - | -- - | - - - - -
-
- * finish the bond escalation process when pledges are not tied.- - |
-
139 | - - -- - | -- - | - - - - -
-
- * @param tyingBuffer Number of seconds to extend the bond escalation process to allow the losing- - |
-
140 | - - -- - | -- - | - - - - -
-
- * party to tie if at the end of the initial deadline the pledges weren't tied.- - |
-
141 | - - -- - | -- - | - - - - -
-
- * @param disputeWindow Number of seconds disputers have to challenge the proposed response since its creation.- - |
-
142 | - - -- - | -- - | - - - - -
-
- */- - |
-
143 | - - -- - | -- - | - - - - -
-
- struct RequestParameters {- - |
-
144 | - - -- - | -- - | - - - - -
-
- IBondEscalationAccounting accountingExtension;- - |
-
145 | - - -- - | -- - | - - - - -
-
- IERC20 bondToken;- - |
-
146 | - - -- - | -- - | - - - - -
-
- uint256 bondSize;- - |
-
147 | - - -- - | -- - | - - - - -
-
- uint256 maxNumberOfEscalations;- - |
-
148 | - - -- - | -- - | - - - - -
-
- uint256 bondEscalationDeadline;- - |
-
149 | - - -- - | -- - | - - - - -
-
- uint256 tyingBuffer;- - |
-
150 | - - -- - | -- - | - - - - -
-
- uint256 disputeWindow;- - |
-
151 | - - -- - | -- - | - - - - -
-
- }- - |
-
152 | - - -- - | -- - | - - - - -- - - - | -
153 | - - -- - | -- - | - - - - -
-
- /**- - |
-
154 | - - -- - | -- - | - - - - -
-
- * @notice Data of a dispute going through the bond escalation.- - |
-
155 | - - -- - | -- - | - - - - -
-
- *- - |
-
156 | - - -- - | -- - | - - - - -
-
- * @param disputeId The id of the dispute being bond-escalated.- - |
-
157 | - - -- - | -- - | - - - - -
-
- * @param status The status of the bond escalation.- - |
-
158 | - - -- - | -- - | - - - - -
-
- * @param amountOfPledgesForDispute The amount of pledges made in favor of the dispute.- - |
-
159 | - - -- - | -- - | - - - - -
-
- * @param amountOfPledgesAgainstDispute The amount of pledges made against the dispute.- - |
-
160 | - - -- - | -- - | - - - - -
-
- */- - |
-
161 | - - -- - | -- - | - - - - -
-
- struct BondEscalation {- - |
-
162 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId;- - |
-
163 | - - -- - | -- - | - - - - -
-
- BondEscalationStatus status;- - |
-
164 | - - -- - | -- - | - - - - -
-
- uint256 amountOfPledgesForDispute;- - |
-
165 | - - -- - | -- - | - - - - -
-
- uint256 amountOfPledgesAgainstDispute;- - |
-
166 | - - -- - | -- - | - - - - -
-
- }- - |
-
167 | - - -- - | -- - | - - - - -- - - - | -
168 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
169 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
170 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
171 | - - -- - | -- - | - - - - -- - - - | -
172 | - - -- - | -- - | - - - - -
-
- /**- - |
-
173 | - - -- - | -- - | - - - - -
-
- * @notice Returns the escalation data for a request.- - |
-
174 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request to get its escalation data.- - |
-
175 | - - -- - | -- - | - - - - -
-
- * @return _escalation The struct containing the escalation data.- - |
-
176 | - - -- - | -- - | - - - - -
-
- */- - |
-
177 | - - -- - | -- - | - - - - -
-
- function getEscalation(bytes32 _requestId) external view returns (BondEscalation memory _escalation);- - |
-
178 | - - -- - | -- - | - - - - -- - - - | -
179 | - - -- - | -- - | - - - - -
-
- /**- - |
-
180 | - - -- - | -- - | - - - - -
-
- * @notice Returns the decoded data for a request- - |
-
181 | - - -- - | -- - | - - - - -
-
- * @param _data The encoded request parameters- - |
-
182 | - - -- - | -- - | - - - - -
-
- * @return _params The struct containing the parameters for the request- - |
-
183 | - - -- - | -- - | - - - - -
-
- */- - |
-
184 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) external view returns (RequestParameters memory _params);- - |
-
185 | - - -- - | -- - | - - - - -- - - - | -
186 | - - -- - | -- - | - - - - -
-
- /**- - |
-
187 | - - -- - | -- - | - - - - -
-
- * @notice Returns the amount of pledges that a particular pledger has made for a given dispute.- - |
-
188 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request to get the pledges for.- - |
-
189 | - - -- - | -- - | - - - - -
-
- * @param _pledger The address of the pledger to get the pledges for.- - |
-
190 | - - -- - | -- - | - - - - -
-
- * @return _numPledges The number of pledges made by the pledger for the dispute.- - |
-
191 | - - -- - | -- - | - - - - -
-
- */- - |
-
192 | - - -- - | -- - | - - - - -
-
- function pledgesForDispute(bytes32 _requestId, address _pledger) external view returns (uint256 _numPledges);- - |
-
193 | - - -- - | -- - | - - - - -- - - - | -
194 | - - -- - | -- - | - - - - -
-
- /**- - |
-
195 | - - -- - | -- - | - - - - -
-
- * @notice Returns the amount of pledges that a particular pledger has made against a given dispute.- - |
-
196 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request to get the pledges for.- - |
-
197 | - - -- - | -- - | - - - - -
-
- * @param _pledger The address of the pledger to get the pledges for.- - |
-
198 | - - -- - | -- - | - - - - -
-
- * @return _numPledges The number of pledges made by the pledger against the dispute.- - |
-
199 | - - -- - | -- - | - - - - -
-
- */- - |
-
200 | - - -- - | -- - | - - - - -
-
- function pledgesAgainstDispute(bytes32 _requestId, address _pledger) external view returns (uint256 _numPledges);- - |
-
201 | - - -- - | -- - | - - - - -- - - - | -
202 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
203 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
204 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
205 | - - -- - | -- - | - - - - -- - - - | -
206 | - - -- - | -- - | - - - - -
-
- /**- - |
-
207 | - - -- - | -- - | - - - - -
-
- * @notice Disputes a response- - |
-
208 | - - -- - | -- - | - - - - -
-
- *- - |
-
209 | - - -- - | -- - | - - - - -
-
- * @dev If this is the first dispute of the request and the bond escalation window is not over,- - |
-
210 | - - -- - | -- - | - - - - -
-
- * it will start the bond escalation process. This function must be called through the Oracle.- - |
-
211 | - - -- - | -- - | - - - - -
-
- *- - |
-
212 | - - -- - | -- - | - - - - -
-
- * @param _request The request data.- - |
-
213 | - - -- - | -- - | - - - - -
-
- * @param _response The response being disputed.- - |
-
214 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute created by the oracle.- - |
-
215 | - - -- - | -- - | - - - - -
-
- */- - |
-
216 | - - -- - | -- - | - - - - -
-
- function disputeResponse(- - |
-
217 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
218 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
219 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
220 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
221 | - - -- - | -- - | - - - - -- - - - | -
222 | - - -- - | -- - | - - - - -
-
- /**- - |
-
223 | - - -- - | -- - | - - - - -
-
- * @notice Updates the status of a given disputeId and pays the proposer and disputer accordingly. If this- - |
-
224 | - - -- - | -- - | - - - - -
-
- * dispute has gone through the bond escalation mechanism, then it will pay the winning pledgers as well.- - |
-
225 | - - -- - | -- - | - - - - -
-
- *- - |
-
226 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute to update the status for.- - |
-
227 | - - -- - | -- - | - - - - -
-
- * @param _request The request data.- - |
-
228 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response.- - |
-
229 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data.- - |
-
230 | - - -- - | -- - | - - - - -
-
- */- - |
-
231 | - - -- - | -- - | - - - - -
-
- function onDisputeStatusChange(- - |
-
232 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
233 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
234 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
235 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
236 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
237 | - - -- - | -- - | - - - - -- - - - | -
238 | - - -- - | -- - | - - - - -
-
- /**- - |
-
239 | - - -- - | -- - | - - - - -
-
- * @notice Bonds funds in favor of a given dispute during the bond escalation process.- - |
-
240 | - - -- - | -- - | - - - - -
-
- *- - |
-
241 | - - -- - | -- - | - - - - -
-
- * @param _request The request data.- - |
-
242 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data.- - |
-
243 | - - -- - | -- - | - - - - -
-
- *- - |
-
244 | - - -- - | -- - | - - - - -
-
- * @dev If the bond escalation is not tied at the end of its deadline, a tying buffer is added- - |
-
245 | - - -- - | -- - | - - - - -
-
- * to avoid scenarios where one of the parties breaks the tie very last second.- - |
-
246 | - - -- - | -- - | - - - - -
-
- * During the tying buffer, the losing party can only tie, and once the escalation is tied- - |
-
247 | - - -- - | -- - | - - - - -
-
- * no further funds can be pledged.- - |
-
248 | - - -- - | -- - | - - - - -
-
- */- - |
-
249 | - - -- - | -- - | - - - - -
-
- function pledgeForDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external;- - |
-
250 | - - -- - | -- - | - - - - -- - - - | -
251 | - - -- - | -- - | - - - - -
-
- /**- - |
-
252 | - - -- - | -- - | - - - - -
-
- * @notice Pledges funds against a given disputeId during its bond escalation process.- - |
-
253 | - - -- - | -- - | - - - - -
-
- *- - |
-
254 | - - -- - | -- - | - - - - -
-
- * @param _request The request data.- - |
-
255 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data.- - |
-
256 | - - -- - | -- - | - - - - -
-
- *- - |
-
257 | - - -- - | -- - | - - - - -
-
- * @dev Will revert if the disputeId is not going through the bond escalation process.- - |
-
258 | - - -- - | -- - | - - - - -
-
- * @dev If the bond escalation is not tied at the end of its deadline, a tying buffer is added- - |
-
259 | - - -- - | -- - | - - - - -
-
- * to avoid scenarios where one of the parties breaks the tie very last second.- - |
-
260 | - - -- - | -- - | - - - - -
-
- * During the tying buffer, the losing party can only tie, and once the escalation is tied- - |
-
261 | - - -- - | -- - | - - - - -
-
- * no further funds can be pledged.- - |
-
262 | - - -- - | -- - | - - - - -
-
- */- - |
-
263 | - - -- - | -- - | - - - - -
-
- function pledgeAgainstDispute(IOracle.Request calldata _request, IOracle.Dispute calldata _dispute) external;- - |
-
264 | - - -- - | -- - | - - - - -- - - - | -
265 | - - -- - | -- - | - - - - -
-
- /**- - |
-
266 | - - -- - | -- - | - - - - -
-
- * @notice Settles the bond escalation process of a given requestId.- - |
-
267 | - - -- - | -- - | - - - - -
-
- *- - |
-
268 | - - -- - | -- - | - - - - -
-
- * @param _request The request data.- - |
-
269 | - - -- - | -- - | - - - - -
-
- * @param _response The response data.- - |
-
270 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data.- - |
-
271 | - - -- - | -- - | - - - - -
-
- *- - |
-
272 | - - -- - | -- - | - - - - -
-
- * @dev Can only be called if after the deadline + tyingBuffer window is over, the pledges weren't tied- - |
-
273 | - - -- - | -- - | - - - - -
-
- */- - |
-
274 | - - -- - | -- - | - - - - -
-
- function settleBondEscalation(- - |
-
275 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
276 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
277 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
278 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
279 | - - -- - | -- - | - - - - -
-
- }- - |
-
280 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IResolutionModule} from- - |
-
6 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-core/solidity/interfaces/modules/resolution/IResolutionModule.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- /*- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @title ArbitratorModule- - |
-
10 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing an external arbitrator contract to resolve a dispute.- - |
-
11 | - - -- - | -- - | - - - - -
-
- */- - |
-
12 | - - -- - | -- - | - - - - -
-
- interface IArbitratorModule is IResolutionModule {- - |
-
13 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
14 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
15 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /**- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to resolve a dispute that is not escalated- - |
-
19 | - - -- - | -- - | - - - - -
-
- */- - |
-
20 | - - -- - | -- - | - - - - -
-
- error ArbitratorModule_InvalidDisputeId();- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- /**- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the arbitrator address is the address zero- - |
-
24 | - - -- - | -- - | - - - - -
-
- */- - |
-
25 | - - -- - | -- - | - - - - -
-
- error ArbitratorModule_InvalidArbitrator();- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- /**- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the arbitrator returns an invalid resolution status- - |
-
29 | - - -- - | -- - | - - - - -
-
- */- - |
-
30 | - - -- - | -- - | - - - - -
-
- error ArbitratorModule_InvalidResolutionStatus();- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
33 | - - -- - | -- - | - - - - -
-
- ENUMS- - |
-
34 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- /**- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @notice Available status of the arbitration process- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param Unknown The arbitration process has not started (default)- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param Active The arbitration process is active- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param Resolved The The arbitration process is finished- - |
-
41 | - - -- - | -- - | - - - - -
-
- */- - |
-
42 | - - -- - | -- - | - - - - -
-
- enum ArbitrationStatus {- - |
-
43 | - - -- - | -- - | - - - - -
-
- Unknown,- - |
-
44 | - - -- - | -- - | - - - - -
-
- Active,- - |
-
45 | - - -- - | -- - | - - - - -
-
- Resolved- - |
-
46 | - - -- - | -- - | - - - - -
-
- }- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
49 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
50 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
51 | - - -- - | -- - | - - - - -
-
- /**- - |
-
52 | - - -- - | -- - | - - - - -
-
- * @notice Parameters of the request as stored in the module- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @param arbitrator The address of the arbitrator- - |
-
54 | - - -- - | -- - | - - - - -
-
- */- - |
-
55 | - - -- - | -- - | - - - - -
-
- struct RequestParameters {- - |
-
56 | - - -- - | -- - | - - - - -
-
- address arbitrator;- - |
-
57 | - - -- - | -- - | - - - - -
-
- }- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
60 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
61 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
62 | - - -- - | -- - | - - - - -- - - - | -
63 | - - -- - | -- - | - - - - -
-
- /**- - |
-
64 | - - -- - | -- - | - - - - -
-
- * @notice Returns the decoded data for a request- - |
-
65 | - - -- - | -- - | - - - - -
-
- *- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @param _data The encoded request parameters- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @return _params The struct containing the parameters for the request- - |
-
68 | - - -- - | -- - | - - - - -
-
- */- - |
-
69 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) external view returns (RequestParameters memory _params);- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- /**- - |
-
72 | - - -- - | -- - | - - - - -
-
- * @notice Returns the current arbitration status of a dispute- - |
-
73 | - - -- - | -- - | - - - - -
-
- *- - |
-
74 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
75 | - - -- - | -- - | - - - - -
-
- * @return _disputeStatus The `ArbitrationStatus` of the dispute- - |
-
76 | - - -- - | -- - | - - - - -
-
- */- - |
-
77 | - - -- - | -- - | - - - - -
-
- function getStatus(bytes32 _disputeId) external view returns (ArbitrationStatus _disputeStatus);- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- /**- - |
-
80 | - - -- - | -- - | - - - - -
-
- * @notice Starts the arbitration process by calling `resolve` on the arbitrator and flags the dispute as Active- - |
-
81 | - - -- - | -- - | - - - - -
-
- *- - |
-
82 | - - -- - | -- - | - - - - -
-
- * @dev Only callable by the Oracle- - |
-
83 | - - -- - | -- - | - - - - -
-
- * @dev Will revert if the arbitrator address is the address zero- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
85 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute being sent to the resolution- - |
-
88 | - - -- - | -- - | - - - - -
-
- */- - |
-
89 | - - -- - | -- - | - - - - -
-
- function startResolution(- - |
-
90 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
91 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
92 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
93 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
94 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- /**- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @notice Resolves the dispute by getting the answer from the arbitrator and updating the dispute status- - |
-
98 | - - -- - | -- - | - - - - -
-
- *- - |
-
99 | - - -- - | -- - | - - - - -
-
- * @dev Only callable by the Oracle- - |
-
100 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
101 | - - -- - | -- - | - - - - -
-
- * @param _request The request- - |
-
102 | - - -- - | -- - | - - - - -
-
- * @param _response The disputed response- - |
-
103 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute that is being resolved- - |
-
104 | - - -- - | -- - | - - - - -
-
- */- - |
-
105 | - - -- - | -- - | - - - - -
-
- function resolveDispute(- - |
-
106 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
107 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
108 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
109 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
110 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
111 | - - -- - | -- - | - - - - -
-
- }- - |
-
112 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IResponseModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/response/IResponseModule.sol';- - |
-
6 | - - -- - | -- - | - - - - -
-
- import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- import {IAccountingExtension} from '../../extensions/IAccountingExtension.sol';- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- /*- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @title BondedResponseModule- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing users to propose a response for a request by bonding tokens- - |
-
13 | - - -- - | -- - | - - - - -
-
- */- - |
-
14 | - - -- - | -- - | - - - - -
-
- interface IBondedResponseModule is IResponseModule {- - |
-
15 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
16 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
17 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
18 | - - -- - | -- - | - - - - -
-
- /**- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a response is proposed- - |
-
20 | - - -- - | -- - | - - - - -
-
- *- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request that the response was proposed- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @param _response The proposed response- - |
-
23 | - - -- - | -- - | - - - - -
-
- */- - |
-
24 | - - -- - | -- - | - - - - -
-
- event ResponseProposed(bytes32 indexed _requestId, IOracle.Response _response);- - |
-
25 | - - -- - | -- - | - - - - -- - - - | -
26 | - - -- - | -- - | - - - - -
-
- /**- - |
-
27 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when an uncalled response is released- - |
-
28 | - - -- - | -- - | - - - - -
-
- *- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request that the response was proposed to- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @param _responseId The ID of the response that was released- - |
-
31 | - - -- - | -- - | - - - - -
-
- */- - |
-
32 | - - -- - | -- - | - - - - -
-
- event UnutilizedResponseReleased(bytes32 indexed _requestId, bytes32 indexed _responseId);- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
35 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
36 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- /**- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to finalize a request before the deadline- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- error BondedResponseModule_TooEarlyToFinalize();- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- /**- - |
-
44 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to propose a response after deadline- - |
-
45 | - - -- - | -- - | - - - - -
-
- */- - |
-
46 | - - -- - | -- - | - - - - -
-
- error BondedResponseModule_TooLateToPropose();- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- /**- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to propose a response while an undisputed response is already proposed- - |
-
50 | - - -- - | -- - | - - - - -
-
- */- - |
-
51 | - - -- - | -- - | - - - - -
-
- error BondedResponseModule_AlreadyResponded();- - |
-
52 | - - -- - | -- - | - - - - -- - - - | -
53 | - - -- - | -- - | - - - - -
-
- /**- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to release an uncalled response with an invalid request, response or dispute- - |
-
55 | - - -- - | -- - | - - - - -
-
- */- - |
-
56 | - - -- - | -- - | - - - - -
-
- error BondedResponseModule_InvalidReleaseParameters();- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
59 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
60 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
61 | - - -- - | -- - | - - - - -- - - - | -
62 | - - -- - | -- - | - - - - -
-
- /**- - |
-
63 | - - -- - | -- - | - - - - -
-
- * @notice Parameters of the request as stored in the module- - |
-
64 | - - -- - | -- - | - - - - -
-
- *- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @param accountingExtension The accounting extension used to bond and release tokens- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @param bondToken The token used for bonds in the request- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @param bondSize The amount of `_bondToken` to bond to propose a response and dispute- - |
-
68 | - - -- - | -- - | - - - - -
-
- * @param deadline The timestamp after which no responses can be proposed- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @param disputeWindow The time buffer required to finalize a request- - |
-
70 | - - -- - | -- - | - - - - -
-
- */- - |
-
71 | - - -- - | -- - | - - - - -
-
- struct RequestParameters {- - |
-
72 | - - -- - | -- - | - - - - -
-
- IAccountingExtension accountingExtension;- - |
-
73 | - - -- - | -- - | - - - - -
-
- IERC20 bondToken;- - |
-
74 | - - -- - | -- - | - - - - -
-
- uint256 bondSize;- - |
-
75 | - - -- - | -- - | - - - - -
-
- uint256 deadline;- - |
-
76 | - - -- - | -- - | - - - - -
-
- uint256 disputeWindow;- - |
-
77 | - - -- - | -- - | - - - - -
-
- }- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
80 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
81 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- /**- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @notice Returns the decoded data for a request- - |
-
85 | - - -- - | -- - | - - - - -
-
- *- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @param _data The encoded data- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @return _params The struct containing the parameters for the request- - |
-
88 | - - -- - | -- - | - - - - -
-
- */- - |
-
89 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) external pure returns (RequestParameters memory _params);- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- /**- - |
-
92 | - - -- - | -- - | - - - - -
-
- * @notice Proposes a response for a request, bonding the proposer's tokens- - |
-
93 | - - -- - | -- - | - - - - -
-
- *- - |
-
94 | - - -- - | -- - | - - - - -
-
- * @dev The user must have previously deposited tokens into the accounting extension- - |
-
95 | - - -- - | -- - | - - - - -
-
- * @param _request The request to propose a response to- - |
-
96 | - - -- - | -- - | - - - - -
-
- * @param _response The response being proposed- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @param _sender The address that initiated the transaction- - |
-
98 | - - -- - | -- - | - - - - -
-
- */- - |
-
99 | - - -- - | -- - | - - - - -
-
- function propose(IOracle.Request calldata _request, IOracle.Response calldata _response, address _sender) external;- - |
-
100 | - - -- - | -- - | - - - - -- - - - | -
101 | - - -- - | -- - | - - - - -
-
- /**- - |
-
102 | - - -- - | -- - | - - - - -
-
- * @notice Finalizes the request by releasing the bond of the proposer- - |
-
103 | - - -- - | -- - | - - - - -
-
- *- - |
-
104 | - - -- - | -- - | - - - - -
-
- * @param _request The request that is being finalized- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @param _response The final response- - |
-
106 | - - -- - | -- - | - - - - -
-
- * @param _finalizer The user who triggered the finalization- - |
-
107 | - - -- - | -- - | - - - - -
-
- */- - |
-
108 | - - -- - | -- - | - - - - -
-
- function finalizeRequest(- - |
-
109 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
110 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
111 | - - -- - | -- - | - - - - -
-
- address _finalizer- - |
-
112 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- /**- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @notice Releases the proposer funds if the response is valid and it has not been used to finalize the request- - |
-
116 | - - -- - | -- - | - - - - -
-
- *- - |
-
117 | - - -- - | -- - | - - - - -
-
- * @param _request The finalized request- - |
-
118 | - - -- - | -- - | - - - - -
-
- * @param _response The unutilized response- - |
-
119 | - - -- - | -- - | - - - - -
-
- */- - |
-
120 | - - -- - | -- - | - - - - -
-
- function releaseUnutilizedResponse(IOracle.Request calldata _request, IOracle.Response calldata _response) external;- - |
-
121 | - - -- - | -- - | - - - - -
-
- }- - |
-
122 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -2 / 53 (3.8%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import "./IERC20.sol";- - |
-
7 | - - -- - | -- - | - - - - -
-
- import "./extensions/IERC20Metadata.sol";- - |
-
8 | - - -- - | -- - | - - - - -
-
- import "../../utils/Context.sol";- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @dev Implementation of the {IERC20} interface.- - |
-
12 | - - -- - | -- - | - - - - -
-
- *- - |
-
13 | - - -- - | -- - | - - - - -
-
- * This implementation is agnostic to the way tokens are created. This means- - |
-
14 | - - -- - | -- - | - - - - -
-
- * that a supply mechanism has to be added in a derived contract using {_mint}.- - |
-
15 | - - -- - | -- - | - - - - -
-
- * For a generic mechanism see {ERC20PresetMinterPauser}.- - |
-
16 | - - -- - | -- - | - - - - -
-
- *- - |
-
17 | - - -- - | -- - | - - - - -
-
- * TIP: For a detailed writeup see our guide- - |
-
18 | - - -- - | -- - | - - - - -
-
- * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How- - |
-
19 | - - -- - | -- - | - - - - -
-
- * to implement supply mechanisms].- - |
-
20 | - - -- - | -- - | - - - - -
-
- *- - |
-
21 | - - -- - | -- - | - - - - -
-
- * The default value of {decimals} is 18. To change this, you should override- - |
-
22 | - - -- - | -- - | - - - - -
-
- * this function so it returns a different value.- - |
-
23 | - - -- - | -- - | - - - - -
-
- *- - |
-
24 | - - -- - | -- - | - - - - -
-
- * We have followed general OpenZeppelin Contracts guidelines: functions revert- - |
-
25 | - - -- - | -- - | - - - - -
-
- * instead returning `false` on failure. This behavior is nonetheless- - |
-
26 | - - -- - | -- - | - - - - -
-
- * conventional and does not conflict with the expectations of ERC20- - |
-
27 | - - -- - | -- - | - - - - -
-
- * applications.- - |
-
28 | - - -- - | -- - | - - - - -
-
- *- - |
-
29 | - - -- - | -- - | - - - - -
-
- * Additionally, an {Approval} event is emitted on calls to {transferFrom}.- - |
-
30 | - - -- - | -- - | - - - - -
-
- * This allows applications to reconstruct the allowance for all accounts just- - |
-
31 | - - -- - | -- - | - - - - -
-
- * by listening to said events. Other implementations of the EIP may not emit- - |
-
32 | - - -- - | -- - | - - - - -
-
- * these events, as it isn't required by the specification.- - |
-
33 | - - -- - | -- - | - - - - -
-
- *- - |
-
34 | - - -- - | -- - | - - - - -
-
- * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}- - |
-
35 | - - -- - | -- - | - - - - -
-
- * functions have been added to mitigate the well-known issues around setting- - |
-
36 | - - -- - | -- - | - - - - -
-
- * allowances. See {IERC20-approve}.- - |
-
37 | - - -- - | -- - | - - - - -
-
- */- - |
-
38 | - - -- - | -- - | - - - - -
-
- contract ERC20 is Context, IERC20, IERC20Metadata {- - |
-
39 | - - -- - | -- - | - - - - -
-
- mapping(address => uint256) private _balances;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- mapping(address => mapping(address => uint256)) private _allowances;- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- uint256 private _totalSupply;- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- string private _name;- - |
-
46 | - - -- - | -- - | - - - - -
-
- string private _symbol;- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- /**- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @dev Sets the values for {name} and {symbol}.- - |
-
50 | - - -- - | -- - | - - - - -
-
- *- - |
-
51 | - - -- - | -- - | - - - - -
-
- * All two of these values are immutable: they can only be set once during- - |
-
52 | - - -- - | -- - | - - - - -
-
- * construction.- - |
-
53 | - - -- - | -- - | - - - - -
-
- */- - |
-
54 | - - -- - | -- - | - - - - -
-
- constructor(string memory name_, string memory symbol_) {- - |
-
55 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _name = name_;- - |
-
56 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _symbol = symbol_;- - |
-
57 | - - -- - | -- - | - - - - -
-
- }- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- /**- - |
-
60 | - - -- - | -- - | - - - - -
-
- * @dev Returns the name of the token.- - |
-
61 | - - -- - | -- - | - - - - -
-
- */- - |
-
62 | - - -- - | -- - | - - - - -
-
- function name() public view virtual override returns (string memory) {- - |
-
63 | - - -- - | -- - | - - - - -
-
- return _name;- - |
-
64 | - - -- - | -- - | - - - - -
-
- }- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- /**- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @dev Returns the symbol of the token, usually a shorter version of the- - |
-
68 | - - -- - | -- - | - - - - -
-
- * name.- - |
-
69 | - - -- - | -- - | - - - - -
-
- */- - |
-
70 | - - -- - | -- - | - - - - -
-
- function symbol() public view virtual override returns (string memory) {- - |
-
71 | - - -- - | -- - | - - - - -
-
- return _symbol;- - |
-
72 | - - -- - | -- - | - - - - -
-
- }- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- /**- - |
-
75 | - - -- - | -- - | - - - - -
-
- * @dev Returns the number of decimals used to get its user representation.- - |
-
76 | - - -- - | -- - | - - - - -
-
- * For example, if `decimals` equals `2`, a balance of `505` tokens should- - |
-
77 | - - -- - | -- - | - - - - -
-
- * be displayed to a user as `5.05` (`505 / 10 ** 2`).- - |
-
78 | - - -- - | -- - | - - - - -
-
- *- - |
-
79 | - - -- - | -- - | - - - - -
-
- * Tokens usually opt for a value of 18, imitating the relationship between- - |
-
80 | - - -- - | -- - | - - - - -
-
- * Ether and Wei. This is the default value returned by this function, unless- - |
-
81 | - - -- - | -- - | - - - - -
-
- * it's overridden.- - |
-
82 | - - -- - | -- - | - - - - -
-
- *- - |
-
83 | - - -- - | -- - | - - - - -
-
- * NOTE: This information is only used for _display_ purposes: it in- - |
-
84 | - - -- - | -- - | - - - - -
-
- * no way affects any of the arithmetic of the contract, including- - |
-
85 | - - -- - | -- - | - - - - -
-
- * {IERC20-balanceOf} and {IERC20-transfer}.- - |
-
86 | - - -- - | -- - | - - - - -
-
- */- - |
-
87 | - - -- - | -- - | - - - - -
-
- function decimals() public view virtual override returns (uint8) {- - |
-
88 | - - -- - | -- - | - - - - -
-
- return 18;- - |
-
89 | - - -- - | -- - | - - - - -
-
- }- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- /**- - |
-
92 | - - -- - | -- - | - - - - -
-
- * @dev See {IERC20-totalSupply}.- - |
-
93 | - - -- - | -- - | - - - - -
-
- */- - |
-
94 | - - -- - | -- - | - - - - -
-
- function totalSupply() public view virtual override returns (uint256) {- - |
-
95 | - - -- - | -- - | - - - - -
-
- return _totalSupply;- - |
-
96 | - - -- - | -- - | - - - - -
-
- }- - |
-
97 | - - -- - | -- - | - - - - -- - - - | -
98 | - - -- - | -- - | - - - - -
-
- /**- - |
-
99 | - - -- - | -- - | - - - - -
-
- * @dev See {IERC20-balanceOf}.- - |
-
100 | - - -- - | -- - | - - - - -
-
- */- - |
-
101 | - - -- - | -- - | - - - - -
-
- function balanceOf(address account) public view virtual override returns (uint256) {- - |
-
102 | - - -- - | -- - | - - - - -
-
- return _balances[account];- - |
-
103 | - - -- - | -- - | - - - - -
-
- }- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -- - | -- - | - - - - -
-
- /**- - |
-
106 | - - -- - | -- - | - - - - -
-
- * @dev See {IERC20-transfer}.- - |
-
107 | - - -- - | -- - | - - - - -
-
- *- - |
-
108 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
109 | - - -- - | -- - | - - - - -
-
- *- - |
-
110 | - - -- - | -- - | - - - - -
-
- * - `to` cannot be the zero address.- - |
-
111 | - - -- - | -- - | - - - - -
-
- * - the caller must have a balance of at least `amount`.- - |
-
112 | - - -- - | -- - | - - - - -
-
- */- - |
-
113 | - - -- - | -- - | - - - - -
-
- function transfer(address to, uint256 amount) public virtual override returns (bool) {- - |
-
114 | - - -- - | -- - | - - - - -
-
- address owner = _msgSender();- - |
-
115 | - - -- - | -- - | - - - - -
-
- _transfer(owner, to, amount);- - |
-
116 | - - -- - | -- - | - - - - -
-
- return true;- - |
-
117 | - - -- - | -- - | - - - - -
-
- }- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -- - | -- - | - - - - -
-
- /**- - |
-
120 | - - -- - | -- - | - - - - -
-
- * @dev See {IERC20-allowance}.- - |
-
121 | - - -- - | -- - | - - - - -
-
- */- - |
-
122 | - - -- - | -- - | - - - - -
-
- function allowance(address owner, address spender) public view virtual override returns (uint256) {- - |
-
123 | - - -- - | -- - | - - - - -
-
- return _allowances[owner][spender];- - |
-
124 | - - -- - | -- - | - - - - -
-
- }- - |
-
125 | - - -- - | -- - | - - - - -- - - - | -
126 | - - -- - | -- - | - - - - -
-
- /**- - |
-
127 | - - -- - | -- - | - - - - -
-
- * @dev See {IERC20-approve}.- - |
-
128 | - - -- - | -- - | - - - - -
-
- *- - |
-
129 | - - -- - | -- - | - - - - -
-
- * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on- - |
-
130 | - - -- - | -- - | - - - - -
-
- * `transferFrom`. This is semantically equivalent to an infinite approval.- - |
-
131 | - - -- - | -- - | - - - - -
-
- *- - |
-
132 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
133 | - - -- - | -- - | - - - - -
-
- *- - |
-
134 | - - -- - | -- - | - - - - -
-
- * - `spender` cannot be the zero address.- - |
-
135 | - - -- - | -- - | - - - - -
-
- */- - |
-
136 | - - -- - | -- - | - - - - -
-
- function approve(address spender, uint256 amount) public virtual override returns (bool) {- - |
-
137 | - - -- - | -- - | - - - - -
-
- address owner = _msgSender();- - |
-
138 | - - -- - | -- - | - - - - -
-
- _approve(owner, spender, amount);- - |
-
139 | - - -- - | -- - | - - - - -
-
- return true;- - |
-
140 | - - -- - | -- - | - - - - -
-
- }- - |
-
141 | - - -- - | -- - | - - - - -- - - - | -
142 | - - -- - | -- - | - - - - -
-
- /**- - |
-
143 | - - -- - | -- - | - - - - -
-
- * @dev See {IERC20-transferFrom}.- - |
-
144 | - - -- - | -- - | - - - - -
-
- *- - |
-
145 | - - -- - | -- - | - - - - -
-
- * Emits an {Approval} event indicating the updated allowance. This is not- - |
-
146 | - - -- - | -- - | - - - - -
-
- * required by the EIP. See the note at the beginning of {ERC20}.- - |
-
147 | - - -- - | -- - | - - - - -
-
- *- - |
-
148 | - - -- - | -- - | - - - - -
-
- * NOTE: Does not update the allowance if the current allowance- - |
-
149 | - - -- - | -- - | - - - - -
-
- * is the maximum `uint256`.- - |
-
150 | - - -- - | -- - | - - - - -
-
- *- - |
-
151 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
152 | - - -- - | -- - | - - - - -
-
- *- - |
-
153 | - - -- - | -- - | - - - - -
-
- * - `from` and `to` cannot be the zero address.- - |
-
154 | - - -- - | -- - | - - - - -
-
- * - `from` must have a balance of at least `amount`.- - |
-
155 | - - -- - | -- - | - - - - -
-
- * - the caller must have allowance for ``from``'s tokens of at least- - |
-
156 | - - -- - | -- - | - - - - -
-
- * `amount`.- - |
-
157 | - - -- - | -- - | - - - - -
-
- */- - |
-
158 | - - -- - | -- - | - - - - -
-
- function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {- - |
-
159 | - - -- - | -- - | - - - - -
-
- address spender = _msgSender();- - |
-
160 | - - -- - | -- - | - - - - -
-
- _spendAllowance(from, spender, amount);- - |
-
161 | - - -- - | -- - | - - - - -
-
- _transfer(from, to, amount);- - |
-
162 | - - -- - | -- - | - - - - -
-
- return true;- - |
-
163 | - - -- - | -- - | - - - - -
-
- }- - |
-
164 | - - -- - | -- - | - - - - -- - - - | -
165 | - - -- - | -- - | - - - - -
-
- /**- - |
-
166 | - - -- - | -- - | - - - - -
-
- * @dev Atomically increases the allowance granted to `spender` by the caller.- - |
-
167 | - - -- - | -- - | - - - - -
-
- *- - |
-
168 | - - -- - | -- - | - - - - -
-
- * This is an alternative to {approve} that can be used as a mitigation for- - |
-
169 | - - -- - | -- - | - - - - -
-
- * problems described in {IERC20-approve}.- - |
-
170 | - - -- - | -- - | - - - - -
-
- *- - |
-
171 | - - -- - | -- - | - - - - -
-
- * Emits an {Approval} event indicating the updated allowance.- - |
-
172 | - - -- - | -- - | - - - - -
-
- *- - |
-
173 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
174 | - - -- - | -- - | - - - - -
-
- *- - |
-
175 | - - -- - | -- - | - - - - -
-
- * - `spender` cannot be the zero address.- - |
-
176 | - - -- - | -- - | - - - - -
-
- */- - |
-
177 | - - -- - | -- - | - - - - -
-
- function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {- - |
-
178 | - - -- - | -- - | - - - - -
-
- address owner = _msgSender();- - |
-
179 | - - -- - | -- - | - - - - -
-
- _approve(owner, spender, allowance(owner, spender) + addedValue);- - |
-
180 | - - -- - | -- - | - - - - -
-
- return true;- - |
-
181 | - - -- - | -- - | - - - - -
-
- }- - |
-
182 | - - -- - | -- - | - - - - -- - - - | -
183 | - - -- - | -- - | - - - - -
-
- /**- - |
-
184 | - - -- - | -- - | - - - - -
-
- * @dev Atomically decreases the allowance granted to `spender` by the caller.- - |
-
185 | - - -- - | -- - | - - - - -
-
- *- - |
-
186 | - - -- - | -- - | - - - - -
-
- * This is an alternative to {approve} that can be used as a mitigation for- - |
-
187 | - - -- - | -- - | - - - - -
-
- * problems described in {IERC20-approve}.- - |
-
188 | - - -- - | -- - | - - - - -
-
- *- - |
-
189 | - - -- - | -- - | - - - - -
-
- * Emits an {Approval} event indicating the updated allowance.- - |
-
190 | - - -- - | -- - | - - - - -
-
- *- - |
-
191 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
192 | - - -- - | -- - | - - - - -
-
- *- - |
-
193 | - - -- - | -- - | - - - - -
-
- * - `spender` cannot be the zero address.- - |
-
194 | - - -- - | -- - | - - - - -
-
- * - `spender` must have allowance for the caller of at least- - |
-
195 | - - -- - | -- - | - - - - -
-
- * `subtractedValue`.- - |
-
196 | - - -- - | -- - | - - - - -
-
- */- - |
-
197 | - - -- - | -- - | - - - - -
-
- function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {- - |
-
198 | - - -- - | -- - | - - - - -
-
- address owner = _msgSender();- - |
-
199 | - - -- - | -- - | - - - - -
-
- uint256 currentAllowance = allowance(owner, spender);- - |
-
200 | - - -- - | -- - | - - - - -
-
- require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");- - |
-
201 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
202 | - - -- - | -- - | - - - - -
-
- _approve(owner, spender, currentAllowance - subtractedValue);- - |
-
203 | - - -- - | -- - | - - - - -
-
- }- - |
-
204 | - - -- - | -- - | - - - - -- - - - | -
205 | - - -- - | -- - | - - - - -
-
- return true;- - |
-
206 | - - -- - | -- - | - - - - -
-
- }- - |
-
207 | - - -- - | -- - | - - - - -- - - - | -
208 | - - -- - | -- - | - - - - -
-
- /**- - |
-
209 | - - -- - | -- - | - - - - -
-
- * @dev Moves `amount` of tokens from `from` to `to`.- - |
-
210 | - - -- - | -- - | - - - - -
-
- *- - |
-
211 | - - -- - | -- - | - - - - -
-
- * This internal function is equivalent to {transfer}, and can be used to- - |
-
212 | - - -- - | -- - | - - - - -
-
- * e.g. implement automatic token fees, slashing mechanisms, etc.- - |
-
213 | - - -- - | -- - | - - - - -
-
- *- - |
-
214 | - - -- - | -- - | - - - - -
-
- * Emits a {Transfer} event.- - |
-
215 | - - -- - | -- - | - - - - -
-
- *- - |
-
216 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
217 | - - -- - | -- - | - - - - -
-
- *- - |
-
218 | - - -- - | -- - | - - - - -
-
- * - `from` cannot be the zero address.- - |
-
219 | - - -- - | -- - | - - - - -
-
- * - `to` cannot be the zero address.- - |
-
220 | - - -- - | -- - | - - - - -
-
- * - `from` must have a balance of at least `amount`.- - |
-
221 | - - -- - | -- - | - - - - -
-
- */- - |
-
222 | - - -- - | -- - | - - - - -
-
- function _transfer(address from, address to, uint256 amount) internal virtual {- - |
-
223 | - - -- - | -- - | - - - - -
-
- require(from != address(0), "ERC20: transfer from the zero address");- - |
-
224 | - - -- - | -- - | - - - - -
-
- require(to != address(0), "ERC20: transfer to the zero address");- - |
-
225 | - - -- - | -- - | - - - - -- - - - | -
226 | - - -- - | -- - | - - - - -
-
- _beforeTokenTransfer(from, to, amount);- - |
-
227 | - - -- - | -- - | - - - - -- - - - | -
228 | - - -- - | -- - | - - - - -
-
- uint256 fromBalance = _balances[from];- - |
-
229 | - - -- - | -- - | - - - - -
-
- require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");- - |
-
230 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
231 | - - -- - | -- - | - - - - -
-
- _balances[from] = fromBalance - amount;- - |
-
232 | - - -- - | -- - | - - - - -
-
- // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by- - |
-
233 | - - -- - | -- - | - - - - -
-
- // decrementing then incrementing.- - |
-
234 | - - -- - | -- - | - - - - -
-
- _balances[to] += amount;- - |
-
235 | - - -- - | -- - | - - - - -
-
- }- - |
-
236 | - - -- - | -- - | - - - - -- - - - | -
237 | - - -- - | -- - | - - - - -
-
- emit Transfer(from, to, amount);- - |
-
238 | - - -- - | -- - | - - - - -- - - - | -
239 | - - -- - | -- - | - - - - -
-
- _afterTokenTransfer(from, to, amount);- - |
-
240 | - - -- - | -- - | - - - - -
-
- }- - |
-
241 | - - -- - | -- - | - - - - -- - - - | -
242 | - - -- - | -- - | - - - - -
-
- /** @dev Creates `amount` tokens and assigns them to `account`, increasing- - |
-
243 | - - -- - | -- - | - - - - -
-
- * the total supply.- - |
-
244 | - - -- - | -- - | - - - - -
-
- *- - |
-
245 | - - -- - | -- - | - - - - -
-
- * Emits a {Transfer} event with `from` set to the zero address.- - |
-
246 | - - -- - | -- - | - - - - -
-
- *- - |
-
247 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
248 | - - -- - | -- - | - - - - -
-
- *- - |
-
249 | - - -- - | -- - | - - - - -
-
- * - `account` cannot be the zero address.- - |
-
250 | - - -- - | -- - | - - - - -
-
- */- - |
-
251 | - - -- - | -- - | - - - - -
-
- function _mint(address account, uint256 amount) internal virtual {- - |
-
252 | - - -- - | -- - | - - - - -
-
- require(account != address(0), "ERC20: mint to the zero address");- - |
-
253 | - - -- - | -- - | - - - - -- - - - | -
254 | - - -- - | -- - | - - - - -
-
- _beforeTokenTransfer(address(0), account, amount);- - |
-
255 | - - -- - | -- - | - - - - -- - - - | -
256 | - - -- - | -- - | - - - - -
-
- _totalSupply += amount;- - |
-
257 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
258 | - - -- - | -- - | - - - - -
-
- // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.- - |
-
259 | - - -- - | -- - | - - - - -
-
- _balances[account] += amount;- - |
-
260 | - - -- - | -- - | - - - - -
-
- }- - |
-
261 | - - -- - | -- - | - - - - -
-
- emit Transfer(address(0), account, amount);- - |
-
262 | - - -- - | -- - | - - - - -- - - - | -
263 | - - -- - | -- - | - - - - -
-
- _afterTokenTransfer(address(0), account, amount);- - |
-
264 | - - -- - | -- - | - - - - -
-
- }- - |
-
265 | - - -- - | -- - | - - - - -- - - - | -
266 | - - -- - | -- - | - - - - -
-
- /**- - |
-
267 | - - -- - | -- - | - - - - -
-
- * @dev Destroys `amount` tokens from `account`, reducing the- - |
-
268 | - - -- - | -- - | - - - - -
-
- * total supply.- - |
-
269 | - - -- - | -- - | - - - - -
-
- *- - |
-
270 | - - -- - | -- - | - - - - -
-
- * Emits a {Transfer} event with `to` set to the zero address.- - |
-
271 | - - -- - | -- - | - - - - -
-
- *- - |
-
272 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
273 | - - -- - | -- - | - - - - -
-
- *- - |
-
274 | - - -- - | -- - | - - - - -
-
- * - `account` cannot be the zero address.- - |
-
275 | - - -- - | -- - | - - - - -
-
- * - `account` must have at least `amount` tokens.- - |
-
276 | - - -- - | -- - | - - - - -
-
- */- - |
-
277 | - - -- - | -- - | - - - - -
-
- function _burn(address account, uint256 amount) internal virtual {- - |
-
278 | - - -- - | -- - | - - - - -
-
- require(account != address(0), "ERC20: burn from the zero address");- - |
-
279 | - - -- - | -- - | - - - - -- - - - | -
280 | - - -- - | -- - | - - - - -
-
- _beforeTokenTransfer(account, address(0), amount);- - |
-
281 | - - -- - | -- - | - - - - -- - - - | -
282 | - - -- - | -- - | - - - - -
-
- uint256 accountBalance = _balances[account];- - |
-
283 | - - -- - | -- - | - - - - -
-
- require(accountBalance >= amount, "ERC20: burn amount exceeds balance");- - |
-
284 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
285 | - - -- - | -- - | - - - - -
-
- _balances[account] = accountBalance - amount;- - |
-
286 | - - -- - | -- - | - - - - -
-
- // Overflow not possible: amount <= accountBalance <= totalSupply.- - |
-
287 | - - -- - | -- - | - - - - -
-
- _totalSupply -= amount;- - |
-
288 | - - -- - | -- - | - - - - -
-
- }- - |
-
289 | - - -- - | -- - | - - - - -- - - - | -
290 | - - -- - | -- - | - - - - -
-
- emit Transfer(account, address(0), amount);- - |
-
291 | - - -- - | -- - | - - - - -- - - - | -
292 | - - -- - | -- - | - - - - -
-
- _afterTokenTransfer(account, address(0), amount);- - |
-
293 | - - -- - | -- - | - - - - -
-
- }- - |
-
294 | - - -- - | -- - | - - - - -- - - - | -
295 | - - -- - | -- - | - - - - -
-
- /**- - |
-
296 | - - -- - | -- - | - - - - -
-
- * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.- - |
-
297 | - - -- - | -- - | - - - - -
-
- *- - |
-
298 | - - -- - | -- - | - - - - -
-
- * This internal function is equivalent to `approve`, and can be used to- - |
-
299 | - - -- - | -- - | - - - - -
-
- * e.g. set automatic allowances for certain subsystems, etc.- - |
-
300 | - - -- - | -- - | - - - - -
-
- *- - |
-
301 | - - -- - | -- - | - - - - -
-
- * Emits an {Approval} event.- - |
-
302 | - - -- - | -- - | - - - - -
-
- *- - |
-
303 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
304 | - - -- - | -- - | - - - - -
-
- *- - |
-
305 | - - -- - | -- - | - - - - -
-
- * - `owner` cannot be the zero address.- - |
-
306 | - - -- - | -- - | - - - - -
-
- * - `spender` cannot be the zero address.- - |
-
307 | - - -- - | -- - | - - - - -
-
- */- - |
-
308 | - - -- - | -- - | - - - - -
-
- function _approve(address owner, address spender, uint256 amount) internal virtual {- - |
-
309 | - - -- - | -- - | - - - - -
-
- require(owner != address(0), "ERC20: approve from the zero address");- - |
-
310 | - - -- - | -- - | - - - - -
-
- require(spender != address(0), "ERC20: approve to the zero address");- - |
-
311 | - - -- - | -- - | - - - - -- - - - | -
312 | - - -- - | -- - | - - - - -
-
- _allowances[owner][spender] = amount;- - |
-
313 | - - -- - | -- - | - - - - -
-
- emit Approval(owner, spender, amount);- - |
-
314 | - - -- - | -- - | - - - - -
-
- }- - |
-
315 | - - -- - | -- - | - - - - -- - - - | -
316 | - - -- - | -- - | - - - - -
-
- /**- - |
-
317 | - - -- - | -- - | - - - - -
-
- * @dev Updates `owner` s allowance for `spender` based on spent `amount`.- - |
-
318 | - - -- - | -- - | - - - - -
-
- *- - |
-
319 | - - -- - | -- - | - - - - -
-
- * Does not update the allowance amount in case of infinite allowance.- - |
-
320 | - - -- - | -- - | - - - - -
-
- * Revert if not enough allowance is available.- - |
-
321 | - - -- - | -- - | - - - - -
-
- *- - |
-
322 | - - -- - | -- - | - - - - -
-
- * Might emit an {Approval} event.- - |
-
323 | - - -- - | -- - | - - - - -
-
- */- - |
-
324 | - - -- - | -- - | - - - - -
-
- function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {- - |
-
325 | - - -- - | -- - | - - - - -
-
- uint256 currentAllowance = allowance(owner, spender);- - |
-
326 | - - -- - | -- - | - - - - -
-
- if (currentAllowance != type(uint256).max) {- - |
-
327 | - - -- - | -- - | - - - - -
-
- require(currentAllowance >= amount, "ERC20: insufficient allowance");- - |
-
328 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
329 | - - -- - | -- - | - - - - -
-
- _approve(owner, spender, currentAllowance - amount);- - |
-
330 | - - -- - | -- - | - - - - -
-
- }- - |
-
331 | - - -- - | -- - | - - - - -
-
- }- - |
-
332 | - - -- - | -- - | - - - - -
-
- }- - |
-
333 | - - -- - | -- - | - - - - -- - - - | -
334 | - - -- - | -- - | - - - - -
-
- /**- - |
-
335 | - - -- - | -- - | - - - - -
-
- * @dev Hook that is called before any transfer of tokens. This includes- - |
-
336 | - - -- - | -- - | - - - - -
-
- * minting and burning.- - |
-
337 | - - -- - | -- - | - - - - -
-
- *- - |
-
338 | - - -- - | -- - | - - - - -
-
- * Calling conditions:- - |
-
339 | - - -- - | -- - | - - - - -
-
- *- - |
-
340 | - - -- - | -- - | - - - - -
-
- * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens- - |
-
341 | - - -- - | -- - | - - - - -
-
- * will be transferred to `to`.- - |
-
342 | - - -- - | -- - | - - - - -
-
- * - when `from` is zero, `amount` tokens will be minted for `to`.- - |
-
343 | - - -- - | -- - | - - - - -
-
- * - when `to` is zero, `amount` of ``from``'s tokens will be burned.- - |
-
344 | - - -- - | -- - | - - - - -
-
- * - `from` and `to` are never both zero.- - |
-
345 | - - -- - | -- - | - - - - -
-
- *- - |
-
346 | - - -- - | -- - | - - - - -
-
- * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].- - |
-
347 | - - -- - | -- - | - - - - -
-
- */- - |
-
348 | - - -- - | -- - | - - - - -
-
- function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}- - |
-
349 | - - -- - | -- - | - - - - -- - - - | -
350 | - - -- - | -- - | - - - - -
-
- /**- - |
-
351 | - - -- - | -- - | - - - - -
-
- * @dev Hook that is called after any transfer of tokens. This includes- - |
-
352 | - - -- - | -- - | - - - - -
-
- * minting and burning.- - |
-
353 | - - -- - | -- - | - - - - -
-
- *- - |
-
354 | - - -- - | -- - | - - - - -
-
- * Calling conditions:- - |
-
355 | - - -- - | -- - | - - - - -
-
- *- - |
-
356 | - - -- - | -- - | - - - - -
-
- * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens- - |
-
357 | - - -- - | -- - | - - - - -
-
- * has been transferred to `to`.- - |
-
358 | - - -- - | -- - | - - - - -
-
- * - when `from` is zero, `amount` tokens have been minted for `to`.- - |
-
359 | - - -- - | -- - | - - - - -
-
- * - when `to` is zero, `amount` of ``from``'s tokens have been burned.- - |
-
360 | - - -- - | -- - | - - - - -
-
- * - `from` and `to` are never both zero.- - |
-
361 | - - -- - | -- - | - - - - -
-
- *- - |
-
362 | - - -- - | -- - | - - - - -
-
- * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].- - |
-
363 | - - -- - | -- - | - - - - -
-
- */- - |
-
364 | - - -- - | -- - | - - - - -
-
- function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}- - |
-
365 | - - -- - | -- - | - - - - -
-
- }- - |
-
366 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- /**- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @dev Interface of the ERC20 standard as defined in the EIP.- - |
-
8 | - - -- - | -- - | - - - - -
-
- */- - |
-
9 | - - -- - | -- - | - - - - -
-
- interface IERC20 {- - |
-
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @dev Emitted when `value` tokens are moved from one account (`from`) to- - |
-
12 | - - -- - | -- - | - - - - -
-
- * another (`to`).- - |
-
13 | - - -- - | -- - | - - - - -
-
- *- - |
-
14 | - - -- - | -- - | - - - - -
-
- * Note that `value` may be zero.- - |
-
15 | - - -- - | -- - | - - - - -
-
- */- - |
-
16 | - - -- - | -- - | - - - - -
-
- event Transfer(address indexed from, address indexed to, uint256 value);- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
18 | - - -- - | -- - | - - - - -
-
- /**- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @dev Emitted when the allowance of a `spender` for an `owner` is set by- - |
-
20 | - - -- - | -- - | - - - - -
-
- * a call to {approve}. `value` is the new allowance.- - |
-
21 | - - -- - | -- - | - - - - -
-
- */- - |
-
22 | - - -- - | -- - | - - - - -
-
- event Approval(address indexed owner, address indexed spender, uint256 value);- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- /**- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @dev Returns the amount of tokens in existence.- - |
-
26 | - - -- - | -- - | - - - - -
-
- */- - |
-
27 | - - -- - | -- - | - - - - -
-
- function totalSupply() external view returns (uint256);- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /**- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @dev Returns the amount of tokens owned by `account`.- - |
-
31 | - - -- - | -- - | - - - - -
-
- */- - |
-
32 | - - -- - | -- - | - - - - -
-
- function balanceOf(address account) external view returns (uint256);- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- /**- - |
-
35 | - - -- - | -- - | - - - - -
-
- * @dev Moves `amount` tokens from the caller's account to `to`.- - |
-
36 | - - -- - | -- - | - - - - -
-
- *- - |
-
37 | - - -- - | -- - | - - - - -
-
- * Returns a boolean value indicating whether the operation succeeded.- - |
-
38 | - - -- - | -- - | - - - - -
-
- *- - |
-
39 | - - -- - | -- - | - - - - -
-
- * Emits a {Transfer} event.- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- function transfer(address to, uint256 amount) external returns (bool);- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- /**- - |
-
44 | - - -- - | -- - | - - - - -
-
- * @dev Returns the remaining number of tokens that `spender` will be- - |
-
45 | - - -- - | -- - | - - - - -
-
- * allowed to spend on behalf of `owner` through {transferFrom}. This is- - |
-
46 | - - -- - | -- - | - - - - -
-
- * zero by default.- - |
-
47 | - - -- - | -- - | - - - - -
-
- *- - |
-
48 | - - -- - | -- - | - - - - -
-
- * This value changes when {approve} or {transferFrom} are called.- - |
-
49 | - - -- - | -- - | - - - - -
-
- */- - |
-
50 | - - -- - | -- - | - - - - -
-
- function allowance(address owner, address spender) external view returns (uint256);- - |
-
51 | - - -- - | -- - | - - - - -- - - - | -
52 | - - -- - | -- - | - - - - -
-
- /**- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.- - |
-
54 | - - -- - | -- - | - - - - -
-
- *- - |
-
55 | - - -- - | -- - | - - - - -
-
- * Returns a boolean value indicating whether the operation succeeded.- - |
-
56 | - - -- - | -- - | - - - - -
-
- *- - |
-
57 | - - -- - | -- - | - - - - -
-
- * IMPORTANT: Beware that changing an allowance with this method brings the risk- - |
-
58 | - - -- - | -- - | - - - - -
-
- * that someone may use both the old and the new allowance by unfortunate- - |
-
59 | - - -- - | -- - | - - - - -
-
- * transaction ordering. One possible solution to mitigate this race- - |
-
60 | - - -- - | -- - | - - - - -
-
- * condition is to first reduce the spender's allowance to 0 and set the- - |
-
61 | - - -- - | -- - | - - - - -
-
- * desired value afterwards:- - |
-
62 | - - -- - | -- - | - - - - -
-
- * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729- - |
-
63 | - - -- - | -- - | - - - - -
-
- *- - |
-
64 | - - -- - | -- - | - - - - -
-
- * Emits an {Approval} event.- - |
-
65 | - - -- - | -- - | - - - - -
-
- */- - |
-
66 | - - -- - | -- - | - - - - -
-
- function approve(address spender, uint256 amount) external returns (bool);- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- /**- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @dev Moves `amount` tokens from `from` to `to` using the- - |
-
70 | - - -- - | -- - | - - - - -
-
- * allowance mechanism. `amount` is then deducted from the caller's- - |
-
71 | - - -- - | -- - | - - - - -
-
- * allowance.- - |
-
72 | - - -- - | -- - | - - - - -
-
- *- - |
-
73 | - - -- - | -- - | - - - - -
-
- * Returns a boolean value indicating whether the operation succeeded.- - |
-
74 | - - -- - | -- - | - - - - -
-
- *- - |
-
75 | - - -- - | -- - | - - - - -
-
- * Emits a {Transfer} event.- - |
-
76 | - - -- - | -- - | - - - - -
-
- */- - |
-
77 | - - -- - | -- - | - - - - -
-
- function transferFrom(address from, address to, uint256 amount) external returns (bool);- - |
-
78 | - - -- - | -- - | - - - - -
-
- }- - |
-
79 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import "../IERC20.sol";- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- /**- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @dev Interface for the optional metadata functions from the ERC20 standard.- - |
-
10 | - - -- - | -- - | - - - - -
-
- *- - |
-
11 | - - -- - | -- - | - - - - -
-
- * _Available since v4.1._- - |
-
12 | - - -- - | -- - | - - - - -
-
- */- - |
-
13 | - - -- - | -- - | - - - - -
-
- interface IERC20Metadata is IERC20 {- - |
-
14 | - - -- - | -- - | - - - - -
-
- /**- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @dev Returns the name of the token.- - |
-
16 | - - -- - | -- - | - - - - -
-
- */- - |
-
17 | - - -- - | -- - | - - - - -
-
- function name() external view returns (string memory);- - |
-
18 | - - -- - | -- - | - - - - -- - - - | -
19 | - - -- - | -- - | - - - - -
-
- /**- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @dev Returns the symbol of the token.- - |
-
21 | - - -- - | -- - | - - - - -
-
- */- - |
-
22 | - - -- - | -- - | - - - - -
-
- function symbol() external view returns (string memory);- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- /**- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @dev Returns the decimals places of the token.- - |
-
26 | - - -- - | -- - | - - - - -
-
- */- - |
-
27 | - - -- - | -- - | - - - - -
-
- function decimals() external view returns (uint8);- - |
-
28 | - - -- - | -- - | - - - - -
-
- }- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- /**- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in- - |
-
8 | - - -- - | -- - | - - - - -
-
- * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].- - |
-
9 | - - -- - | -- - | - - - - -
-
- *- - |
-
10 | - - -- - | -- - | - - - - -
-
- * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by- - |
-
11 | - - -- - | -- - | - - - - -
-
- * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't- - |
-
12 | - - -- - | -- - | - - - - -
-
- * need to send a transaction, and thus is not required to hold Ether at all.- - |
-
13 | - - -- - | -- - | - - - - -
-
- *- - |
-
14 | - - -- - | -- - | - - - - -
-
- * ==== Security Considerations- - |
-
15 | - - -- - | -- - | - - - - -
-
- *- - |
-
16 | - - -- - | -- - | - - - - -
-
- * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature- - |
-
17 | - - -- - | -- - | - - - - -
-
- * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be- - |
-
18 | - - -- - | -- - | - - - - -
-
- * considered as an intention to spend the allowance in any specific way. The second is that because permits have- - |
-
19 | - - -- - | -- - | - - - - -
-
- * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should- - |
-
20 | - - -- - | -- - | - - - - -
-
- * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be- - |
-
21 | - - -- - | -- - | - - - - -
-
- * generally recommended is:- - |
-
22 | - - -- - | -- - | - - - - -
-
- *- - |
-
23 | - - -- - | -- - | - - - - -
-
- * ```solidity- - |
-
24 | - - -- - | -- - | - - - - -
-
- * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {- - |
-
25 | - - -- - | -- - | - - - - -
-
- * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}- - |
-
26 | - - -- - | -- - | - - - - -
-
- * doThing(..., value);- - |
-
27 | - - -- - | -- - | - - - - -
-
- * }- - |
-
28 | - - -- - | -- - | - - - - -
-
- *- - |
-
29 | - - -- - | -- - | - - - - -
-
- * function doThing(..., uint256 value) public {- - |
-
30 | - - -- - | -- - | - - - - -
-
- * token.safeTransferFrom(msg.sender, address(this), value);- - |
-
31 | - - -- - | -- - | - - - - -
-
- * ...- - |
-
32 | - - -- - | -- - | - - - - -
-
- * }- - |
-
33 | - - -- - | -- - | - - - - -
-
- * ```- - |
-
34 | - - -- - | -- - | - - - - -
-
- *- - |
-
35 | - - -- - | -- - | - - - - -
-
- * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of- - |
-
36 | - - -- - | -- - | - - - - -
-
- * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also- - |
-
37 | - - -- - | -- - | - - - - -
-
- * {SafeERC20-safeTransferFrom}).- - |
-
38 | - - -- - | -- - | - - - - -
-
- *- - |
-
39 | - - -- - | -- - | - - - - -
-
- * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so- - |
-
40 | - - -- - | -- - | - - - - -
-
- * contracts should have entry points that don't rely on permit.- - |
-
41 | - - -- - | -- - | - - - - -
-
- */- - |
-
42 | - - -- - | -- - | - - - - -
-
- interface IERC20Permit {- - |
-
43 | - - -- - | -- - | - - - - -
-
- /**- - |
-
44 | - - -- - | -- - | - - - - -
-
- * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,- - |
-
45 | - - -- - | -- - | - - - - -
-
- * given ``owner``'s signed approval.- - |
-
46 | - - -- - | -- - | - - - - -
-
- *- - |
-
47 | - - -- - | -- - | - - - - -
-
- * IMPORTANT: The same issues {IERC20-approve} has related to transaction- - |
-
48 | - - -- - | -- - | - - - - -
-
- * ordering also apply here.- - |
-
49 | - - -- - | -- - | - - - - -
-
- *- - |
-
50 | - - -- - | -- - | - - - - -
-
- * Emits an {Approval} event.- - |
-
51 | - - -- - | -- - | - - - - -
-
- *- - |
-
52 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
53 | - - -- - | -- - | - - - - -
-
- *- - |
-
54 | - - -- - | -- - | - - - - -
-
- * - `spender` cannot be the zero address.- - |
-
55 | - - -- - | -- - | - - - - -
-
- * - `deadline` must be a timestamp in the future.- - |
-
56 | - - -- - | -- - | - - - - -
-
- * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`- - |
-
57 | - - -- - | -- - | - - - - -
-
- * over the EIP712-formatted function arguments.- - |
-
58 | - - -- - | -- - | - - - - -
-
- * - the signature must use ``owner``'s current nonce (see {nonces}).- - |
-
59 | - - -- - | -- - | - - - - -
-
- *- - |
-
60 | - - -- - | -- - | - - - - -
-
- * For more information on the signature format, see the- - |
-
61 | - - -- - | -- - | - - - - -
-
- * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP- - |
-
62 | - - -- - | -- - | - - - - -
-
- * section].- - |
-
63 | - - -- - | -- - | - - - - -
-
- *- - |
-
64 | - - -- - | -- - | - - - - -
-
- * CAUTION: See Security Considerations above.- - |
-
65 | - - -- - | -- - | - - - - -
-
- */- - |
-
66 | - - -- - | -- - | - - - - -
-
- function permit(- - |
-
67 | - - -- - | -- - | - - - - -
-
- address owner,- - |
-
68 | - - -- - | -- - | - - - - -
-
- address spender,- - |
-
69 | - - -- - | -- - | - - - - -
-
- uint256 value,- - |
-
70 | - - -- - | -- - | - - - - -
-
- uint256 deadline,- - |
-
71 | - - -- - | -- - | - - - - -
-
- uint8 v,- - |
-
72 | - - -- - | -- - | - - - - -
-
- bytes32 r,- - |
-
73 | - - -- - | -- - | - - - - -
-
- bytes32 s- - |
-
74 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- /**- - |
-
77 | - - -- - | -- - | - - - - -
-
- * @dev Returns the current nonce for `owner`. This value must be- - |
-
78 | - - -- - | -- - | - - - - -
-
- * included whenever a signature is generated for {permit}.- - |
-
79 | - - -- - | -- - | - - - - -
-
- *- - |
-
80 | - - -- - | -- - | - - - - -
-
- * Every successful call to {permit} increases ``owner``'s nonce by one. This- - |
-
81 | - - -- - | -- - | - - - - -
-
- * prevents a signature from being used multiple times.- - |
-
82 | - - -- - | -- - | - - - - -
-
- */- - |
-
83 | - - -- - | -- - | - - - - -
-
- function nonces(address owner) external view returns (uint256);- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- /**- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.- - |
-
87 | - - -- - | -- - | - - - - -
-
- */- - |
-
88 | - - -- - | -- - | - - - - -
-
- // solhint-disable-next-line func-name-mixedcase- - |
-
89 | - - -- - | -- - | - - - - -
-
- function DOMAIN_SEPARATOR() external view returns (bytes32);- - |
-
90 | - - -- - | -- - | - - - - -
-
- }- - |
-
91 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 4 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import "../IERC20.sol";- - |
-
7 | - - -- - | -- - | - - - - -
-
- import "../extensions/IERC20Permit.sol";- - |
-
8 | - - -- - | -- - | - - - - -
-
- import "../../../utils/Address.sol";- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @title SafeERC20- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @dev Wrappers around ERC20 operations that throw on failure (when the token- - |
-
13 | - - -- - | -- - | - - - - -
-
- * contract returns false). Tokens that return no value (and instead revert or- - |
-
14 | - - -- - | -- - | - - - - -
-
- * throw on failure) are also supported, non-reverting calls are assumed to be- - |
-
15 | - - -- - | -- - | - - - - -
-
- * successful.- - |
-
16 | - - -- - | -- - | - - - - -
-
- * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,- - |
-
17 | - - -- - | -- - | - - - - -
-
- * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.- - |
-
18 | - - -- - | -- - | - - - - -
-
- */- - |
-
19 | - - -- - | -- - | - - - - -
-
- library SafeERC20 {- - |
-
20 | - - -- - | -- - | - - - - -
-
- using Address for address;- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- /**- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,- - |
-
24 | - - -- - | -- - | - - - - -
-
- * non-reverting calls are assumed to be successful.- - |
-
25 | - - -- - | -- - | - - - - -
-
- */- - |
-
26 | - - -- - | -- - | - - - - -
-
- function safeTransfer(IERC20 token, address to, uint256 value) internal {- - |
-
27 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));- - |
-
28 | - - -- - | -- - | - - - - -
-
- }- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
30 | - - -- - | -- - | - - - - -
-
- /**- - |
-
31 | - - -- - | -- - | - - - - -
-
- * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the- - |
-
32 | - - -- - | -- - | - - - - -
-
- * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.- - |
-
33 | - - -- - | -- - | - - - - -
-
- */- - |
-
34 | - - -- - | -- - | - - - - -
-
- function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {- - |
-
35 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));- - |
-
36 | - - -- - | -- - | - - - - -
-
- }- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- /**- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @dev Deprecated. This function has issues similar to the ones found in- - |
-
40 | - - -- - | -- - | - - - - -
-
- * {IERC20-approve}, and its usage is discouraged.- - |
-
41 | - - -- - | -- - | - - - - -
-
- *- - |
-
42 | - - -- - | -- - | - - - - -
-
- * Whenever possible, use {safeIncreaseAllowance} and- - |
-
43 | - - -- - | -- - | - - - - -
-
- * {safeDecreaseAllowance} instead.- - |
-
44 | - - -- - | -- - | - - - - -
-
- */- - |
-
45 | - - -- - | -- - | - - - - -
-
- function safeApprove(IERC20 token, address spender, uint256 value) internal {- - |
-
46 | - - -- - | -- - | - - - - -
-
- // safeApprove should only be called when setting an initial allowance,- - |
-
47 | - - -- - | -- - | - - - - -
-
- // or when resetting it to zero. To increase and decrease it, use- - |
-
48 | - - -- - | -- - | - - - - -
-
- // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'- - |
-
49 | - - -- - | -- - | - - - - -
-
- require(- - |
-
50 | - - -- - | -- - | - - - - -
-
- (value == 0) || (token.allowance(address(this), spender) == 0),- - |
-
51 | - - -- - | -- - | - - - - -
-
- "SafeERC20: approve from non-zero to non-zero allowance"- - |
-
52 | - - -- - | -- - | - - - - -
-
- );- - |
-
53 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));- - |
-
54 | - - -- - | -- - | - - - - -
-
- }- - |
-
55 | - - -- - | -- - | - - - - -- - - - | -
56 | - - -- - | -- - | - - - - -
-
- /**- - |
-
57 | - - -- - | -- - | - - - - -
-
- * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,- - |
-
58 | - - -- - | -- - | - - - - -
-
- * non-reverting calls are assumed to be successful.- - |
-
59 | - - -- - | -- - | - - - - -
-
- */- - |
-
60 | - - -- - | -- - | - - - - -
-
- function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {- - |
-
61 | - - -- - | -- - | - - - - -
-
- uint256 oldAllowance = token.allowance(address(this), spender);- - |
-
62 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value));- - |
-
63 | - - -- - | -- - | - - - - -
-
- }- - |
-
64 | - - -- - | -- - | - - - - -- - - - | -
65 | - - -- - | -- - | - - - - -
-
- /**- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value,- - |
-
67 | - - -- - | -- - | - - - - -
-
- * non-reverting calls are assumed to be successful.- - |
-
68 | - - -- - | -- - | - - - - -
-
- */- - |
-
69 | - - -- - | -- - | - - - - -
-
- function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {- - |
-
70 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
71 | - - -- - | -- - | - - - - -
-
- uint256 oldAllowance = token.allowance(address(this), spender);- - |
-
72 | - - -- - | -- - | - - - - -
-
- require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");- - |
-
73 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value));- - |
-
74 | - - -- - | -- - | - - - - -
-
- }- - |
-
75 | - - -- - | -- - | - - - - -
-
- }- - |
-
76 | - - -- - | -- - | - - - - -- - - - | -
77 | - - -- - | -- - | - - - - -
-
- /**- - |
-
78 | - - -- - | -- - | - - - - -
-
- * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,- - |
-
79 | - - -- - | -- - | - - - - -
-
- * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval- - |
-
80 | - - -- - | -- - | - - - - -
-
- * to be set to zero before setting it to a non-zero value, such as USDT.- - |
-
81 | - - -- - | -- - | - - - - -
-
- */- - |
-
82 | - - -- - | -- - | - - - - -
-
- function forceApprove(IERC20 token, address spender, uint256 value) internal {- - |
-
83 | - - -- - | -- - | - - - - -
-
- bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value);- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- if (!_callOptionalReturnBool(token, approvalCall)) {- - |
-
86 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0));- - |
-
87 | - - -- - | -- - | - - - - -
-
- _callOptionalReturn(token, approvalCall);- - |
-
88 | - - -- - | -- - | - - - - -
-
- }- - |
-
89 | - - -- - | -- - | - - - - -
-
- }- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- /**- - |
-
92 | - - -- - | -- - | - - - - -
-
- * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`.- - |
-
93 | - - -- - | -- - | - - - - -
-
- * Revert on invalid signature.- - |
-
94 | - - -- - | -- - | - - - - -
-
- */- - |
-
95 | - - -- - | -- - | - - - - -
-
- function safePermit(- - |
-
96 | - - -- - | -- - | - - - - -
-
- IERC20Permit token,- - |
-
97 | - - -- - | -- - | - - - - -
-
- address owner,- - |
-
98 | - - -- - | -- - | - - - - -
-
- address spender,- - |
-
99 | - - -- - | -- - | - - - - -
-
- uint256 value,- - |
-
100 | - - -- - | -- - | - - - - -
-
- uint256 deadline,- - |
-
101 | - - -- - | -- - | - - - - -
-
- uint8 v,- - |
-
102 | - - -- - | -- - | - - - - -
-
- bytes32 r,- - |
-
103 | - - -- - | -- - | - - - - -
-
- bytes32 s- - |
-
104 | - - -- - | -- - | - - - - -
-
- ) internal {- - |
-
105 | - - -- - | -- - | - - - - -
-
- uint256 nonceBefore = token.nonces(owner);- - |
-
106 | - - -- - | -- - | - - - - -
-
- token.permit(owner, spender, value, deadline, v, r, s);- - |
-
107 | - - -- - | -- - | - - - - -
-
- uint256 nonceAfter = token.nonces(owner);- - |
-
108 | - - -- - | -- - | - - - - -
-
- require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed");- - |
-
109 | - - -- - | -- - | - - - - -
-
- }- - |
-
110 | - - -- - | -- - | - - - - -- - - - | -
111 | - - -- - | -- - | - - - - -
-
- /**- - |
-
112 | - - -- - | -- - | - - - - -
-
- * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement- - |
-
113 | - - -- - | -- - | - - - - -
-
- * on the return value: the return value is optional (but if data is returned, it must not be false).- - |
-
114 | - - -- - | -- - | - - - - -
-
- * @param token The token targeted by the call.- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @param data The call data (encoded using abi.encode or one of its variants).- - |
-
116 | - - -- - | -- - | - - - - -
-
- */- - |
-
117 | - - -- - | -- - | - - - - -
-
- function _callOptionalReturn(IERC20 token, bytes memory data) private {- - |
-
118 | - - -- - | -- - | - - - - -
-
- // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since- - |
-
119 | - - -- - | -- - | - - - - -
-
- // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that- - |
-
120 | - - -- - | -- - | - - - - -
-
- // the target address contains contract code and also asserts for success in the low-level call.- - |
-
121 | - - -- - | -- - | - - - - -- - - - | -
122 | - - -- - | -- - | - - - - -
-
- bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");- - |
-
123 | - - -- - | -- - | - - - - -
-
- require(returndata.length == 0 || abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");- - |
-
124 | - - -- - | -- - | - - - - -
-
- }- - |
-
125 | - - -- - | -- - | - - - - -- - - - | -
126 | - - -- - | -- - | - - - - -
-
- /**- - |
-
127 | - - -- - | -- - | - - - - -
-
- * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement- - |
-
128 | - - -- - | -- - | - - - - -
-
- * on the return value: the return value is optional (but if data is returned, it must not be false).- - |
-
129 | - - -- - | -- - | - - - - -
-
- * @param token The token targeted by the call.- - |
-
130 | - - -- - | -- - | - - - - -
-
- * @param data The call data (encoded using abi.encode or one of its variants).- - |
-
131 | - - -- - | -- - | - - - - -
-
- *- - |
-
132 | - - -- - | -- - | - - - - -
-
- * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.- - |
-
133 | - - -- - | -- - | - - - - -
-
- */- - |
-
134 | - - -- - | -- - | - - - - -
-
- function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {- - |
-
135 | - - -- - | -- - | - - - - -
-
- // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since- - |
-
136 | - - -- - | -- - | - - - - -
-
- // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false- - |
-
137 | - - -- - | -- - | - - - - -
-
- // and not revert is the subcall reverts.- - |
-
138 | - - -- - | -- - | - - - - -- - - - | -
139 | - - -- - | -- - | - - - - -
-
- (bool success, bytes memory returndata) = address(token).call(data);- - |
-
140 | - - -- - | -- - | - - - - -
-
- return- - |
-
141 | - - -- - | -- - | - - - - -
-
- success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token));- - |
-
142 | - - -- - | -- - | - - - - -
-
- }- - |
-
143 | - - -- - | -- - | - - - - -
-
- }- - |
-
144 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 18 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.1;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- /**- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @dev Collection of functions related to the address type- - |
-
8 | - - -- - | -- - | - - - - -
-
- */- - |
-
9 | - - -- - | -- - | - - - - -
-
- library Address {- - |
-
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @dev Returns true if `account` is a contract.- - |
-
12 | - - -- - | -- - | - - - - -
-
- *- - |
-
13 | - - -- - | -- - | - - - - -
-
- * [IMPORTANT]- - |
-
14 | - - -- - | -- - | - - - - -
-
- * ====- - |
-
15 | - - -- - | -- - | - - - - -
-
- * It is unsafe to assume that an address for which this function returns- - |
-
16 | - - -- - | -- - | - - - - -
-
- * false is an externally-owned account (EOA) and not a contract.- - |
-
17 | - - -- - | -- - | - - - - -
-
- *- - |
-
18 | - - -- - | -- - | - - - - -
-
- * Among others, `isContract` will return false for the following- - |
-
19 | - - -- - | -- - | - - - - -
-
- * types of addresses:- - |
-
20 | - - -- - | -- - | - - - - -
-
- *- - |
-
21 | - - -- - | -- - | - - - - -
-
- * - an externally-owned account- - |
-
22 | - - -- - | -- - | - - - - -
-
- * - a contract in construction- - |
-
23 | - - -- - | -- - | - - - - -
-
- * - an address where a contract will be created- - |
-
24 | - - -- - | -- - | - - - - -
-
- * - an address where a contract lived, but was destroyed- - |
-
25 | - - -- - | -- - | - - - - -
-
- *- - |
-
26 | - - -- - | -- - | - - - - -
-
- * Furthermore, `isContract` will also return true if the target contract within- - |
-
27 | - - -- - | -- - | - - - - -
-
- * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,- - |
-
28 | - - -- - | -- - | - - - - -
-
- * which only has an effect at the end of a transaction.- - |
-
29 | - - -- - | -- - | - - - - -
-
- * ====- - |
-
30 | - - -- - | -- - | - - - - -
-
- *- - |
-
31 | - - -- - | -- - | - - - - -
-
- * [IMPORTANT]- - |
-
32 | - - -- - | -- - | - - - - -
-
- * ====- - |
-
33 | - - -- - | -- - | - - - - -
-
- * You shouldn't rely on `isContract` to protect against flash loan attacks!- - |
-
34 | - - -- - | -- - | - - - - -
-
- *- - |
-
35 | - - -- - | -- - | - - - - -
-
- * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets- - |
-
36 | - - -- - | -- - | - - - - -
-
- * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract- - |
-
37 | - - -- - | -- - | - - - - -
-
- * constructor.- - |
-
38 | - - -- - | -- - | - - - - -
-
- * ====- - |
-
39 | - - -- - | -- - | - - - - -
-
- */- - |
-
40 | - - -- - | -- - | - - - - -
-
- function isContract(address account) internal view returns (bool) {- - |
-
41 | - - -- - | -- - | - - - - -
-
- // This method relies on extcodesize/address.code.length, which returns 0- - |
-
42 | - - -- - | -- - | - - - - -
-
- // for contracts in construction, since the code is only stored at the end- - |
-
43 | - - -- - | -- - | - - - - -
-
- // of the constructor execution.- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- return account.code.length > 0;- - |
-
46 | - - -- - | -- - | - - - - -
-
- }- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- /**- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @dev Replacement for Solidity's `transfer`: sends `amount` wei to- - |
-
50 | - - -- - | -- - | - - - - -
-
- * `recipient`, forwarding all available gas and reverting on errors.- - |
-
51 | - - -- - | -- - | - - - - -
-
- *- - |
-
52 | - - -- - | -- - | - - - - -
-
- * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost- - |
-
53 | - - -- - | -- - | - - - - -
-
- * of certain opcodes, possibly making contracts go over the 2300 gas limit- - |
-
54 | - - -- - | -- - | - - - - -
-
- * imposed by `transfer`, making them unable to receive funds via- - |
-
55 | - - -- - | -- - | - - - - -
-
- * `transfer`. {sendValue} removes this limitation.- - |
-
56 | - - -- - | -- - | - - - - -
-
- *- - |
-
57 | - - -- - | -- - | - - - - -
-
- * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].- - |
-
58 | - - -- - | -- - | - - - - -
-
- *- - |
-
59 | - - -- - | -- - | - - - - -
-
- * IMPORTANT: because control is transferred to `recipient`, care must be- - |
-
60 | - - -- - | -- - | - - - - -
-
- * taken to not create reentrancy vulnerabilities. Consider using- - |
-
61 | - - -- - | -- - | - - - - -
-
- * {ReentrancyGuard} or the- - |
-
62 | - - -- - | -- - | - - - - -
-
- * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].- - |
-
63 | - - -- - | -- - | - - - - -
-
- */- - |
-
64 | - - -- - | -- - | - - - - -
-
- function sendValue(address payable recipient, uint256 amount) internal {- - |
-
65 | - - -- - | -- - | - - - - -
-
- require(address(this).balance >= amount, "Address: insufficient balance");- - |
-
66 | - - -- - | -- - | - - - - -- - - - | -
67 | - - -- - | -- - | - - - - -
-
- (bool success, ) = recipient.call{value: amount}("");- - |
-
68 | - - -- - | -- - | - - - - -
-
- require(success, "Address: unable to send value, recipient may have reverted");- - |
-
69 | - - -- - | -- - | - - - - -
-
- }- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- /**- - |
-
72 | - - -- - | -- - | - - - - -
-
- * @dev Performs a Solidity function call using a low level `call`. A- - |
-
73 | - - -- - | -- - | - - - - -
-
- * plain `call` is an unsafe replacement for a function call: use this- - |
-
74 | - - -- - | -- - | - - - - -
-
- * function instead.- - |
-
75 | - - -- - | -- - | - - - - -
-
- *- - |
-
76 | - - -- - | -- - | - - - - -
-
- * If `target` reverts with a revert reason, it is bubbled up by this- - |
-
77 | - - -- - | -- - | - - - - -
-
- * function (like regular Solidity function calls).- - |
-
78 | - - -- - | -- - | - - - - -
-
- *- - |
-
79 | - - -- - | -- - | - - - - -
-
- * Returns the raw returned data. To convert to the expected return value,- - |
-
80 | - - -- - | -- - | - - - - -
-
- * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].- - |
-
81 | - - -- - | -- - | - - - - -
-
- *- - |
-
82 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
83 | - - -- - | -- - | - - - - -
-
- *- - |
-
84 | - - -- - | -- - | - - - - -
-
- * - `target` must be a contract.- - |
-
85 | - - -- - | -- - | - - - - -
-
- * - calling `target` with `data` must not revert.- - |
-
86 | - - -- - | -- - | - - - - -
-
- *- - |
-
87 | - - -- - | -- - | - - - - -
-
- * _Available since v3.1._- - |
-
88 | - - -- - | -- - | - - - - -
-
- */- - |
-
89 | - - -- - | -- - | - - - - -
-
- function functionCall(address target, bytes memory data) internal returns (bytes memory) {- - |
-
90 | - - -- - | -- - | - - - - -
-
- return functionCallWithValue(target, data, 0, "Address: low-level call failed");- - |
-
91 | - - -- - | -- - | - - - - -
-
- }- - |
-
92 | - - -- - | -- - | - - - - -- - - - | -
93 | - - -- - | -- - | - - - - -
-
- /**- - |
-
94 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with- - |
-
95 | - - -- - | -- - | - - - - -
-
- * `errorMessage` as a fallback revert reason when `target` reverts.- - |
-
96 | - - -- - | -- - | - - - - -
-
- *- - |
-
97 | - - -- - | -- - | - - - - -
-
- * _Available since v3.1._- - |
-
98 | - - -- - | -- - | - - - - -
-
- */- - |
-
99 | - - -- - | -- - | - - - - -
-
- function functionCall(- - |
-
100 | - - -- - | -- - | - - - - -
-
- address target,- - |
-
101 | - - -- - | -- - | - - - - -
-
- bytes memory data,- - |
-
102 | - - -- - | -- - | - - - - -
-
- string memory errorMessage- - |
-
103 | - - -- - | -- - | - - - - -
-
- ) internal returns (bytes memory) {- - |
-
104 | - - -- - | -- - | - - - - -
-
- return functionCallWithValue(target, data, 0, errorMessage);- - |
-
105 | - - -- - | -- - | - - - - -
-
- }- - |
-
106 | - - -- - | -- - | - - - - -- - - - | -
107 | - - -- - | -- - | - - - - -
-
- /**- - |
-
108 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],- - |
-
109 | - - -- - | -- - | - - - - -
-
- * but also transferring `value` wei to `target`.- - |
-
110 | - - -- - | -- - | - - - - -
-
- *- - |
-
111 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
112 | - - -- - | -- - | - - - - -
-
- *- - |
-
113 | - - -- - | -- - | - - - - -
-
- * - the calling contract must have an ETH balance of at least `value`.- - |
-
114 | - - -- - | -- - | - - - - -
-
- * - the called Solidity function must be `payable`.- - |
-
115 | - - -- - | -- - | - - - - -
-
- *- - |
-
116 | - - -- - | -- - | - - - - -
-
- * _Available since v3.1._- - |
-
117 | - - -- - | -- - | - - - - -
-
- */- - |
-
118 | - - -- - | -- - | - - - - -
-
- function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {- - |
-
119 | - - -- - | -- - | - - - - -
-
- return functionCallWithValue(target, data, value, "Address: low-level call with value failed");- - |
-
120 | - - -- - | -- - | - - - - -
-
- }- - |
-
121 | - - -- - | -- - | - - - - -- - - - | -
122 | - - -- - | -- - | - - - - -
-
- /**- - |
-
123 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but- - |
-
124 | - - -- - | -- - | - - - - -
-
- * with `errorMessage` as a fallback revert reason when `target` reverts.- - |
-
125 | - - -- - | -- - | - - - - -
-
- *- - |
-
126 | - - -- - | -- - | - - - - -
-
- * _Available since v3.1._- - |
-
127 | - - -- - | -- - | - - - - -
-
- */- - |
-
128 | - - -- - | -- - | - - - - -
-
- function functionCallWithValue(- - |
-
129 | - - -- - | -- - | - - - - -
-
- address target,- - |
-
130 | - - -- - | -- - | - - - - -
-
- bytes memory data,- - |
-
131 | - - -- - | -- - | - - - - -
-
- uint256 value,- - |
-
132 | - - -- - | -- - | - - - - -
-
- string memory errorMessage- - |
-
133 | - - -- - | -- - | - - - - -
-
- ) internal returns (bytes memory) {- - |
-
134 | - - -- - | -- - | - - - - -
-
- require(address(this).balance >= value, "Address: insufficient balance for call");- - |
-
135 | - - -- - | -- - | - - - - -
-
- (bool success, bytes memory returndata) = target.call{value: value}(data);- - |
-
136 | - - -- - | -- - | - - - - -
-
- return verifyCallResultFromTarget(target, success, returndata, errorMessage);- - |
-
137 | - - -- - | -- - | - - - - -
-
- }- - |
-
138 | - - -- - | -- - | - - - - -- - - - | -
139 | - - -- - | -- - | - - - - -
-
- /**- - |
-
140 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],- - |
-
141 | - - -- - | -- - | - - - - -
-
- * but performing a static call.- - |
-
142 | - - -- - | -- - | - - - - -
-
- *- - |
-
143 | - - -- - | -- - | - - - - -
-
- * _Available since v3.3._- - |
-
144 | - - -- - | -- - | - - - - -
-
- */- - |
-
145 | - - -- - | -- - | - - - - -
-
- function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {- - |
-
146 | - - -- - | -- - | - - - - -
-
- return functionStaticCall(target, data, "Address: low-level static call failed");- - |
-
147 | - - -- - | -- - | - - - - -
-
- }- - |
-
148 | - - -- - | -- - | - - - - -- - - - | -
149 | - - -- - | -- - | - - - - -
-
- /**- - |
-
150 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],- - |
-
151 | - - -- - | -- - | - - - - -
-
- * but performing a static call.- - |
-
152 | - - -- - | -- - | - - - - -
-
- *- - |
-
153 | - - -- - | -- - | - - - - -
-
- * _Available since v3.3._- - |
-
154 | - - -- - | -- - | - - - - -
-
- */- - |
-
155 | - - -- - | -- - | - - - - -
-
- function functionStaticCall(- - |
-
156 | - - -- - | -- - | - - - - -
-
- address target,- - |
-
157 | - - -- - | -- - | - - - - -
-
- bytes memory data,- - |
-
158 | - - -- - | -- - | - - - - -
-
- string memory errorMessage- - |
-
159 | - - -- - | -- - | - - - - -
-
- ) internal view returns (bytes memory) {- - |
-
160 | - - -- - | -- - | - - - - -
-
- (bool success, bytes memory returndata) = target.staticcall(data);- - |
-
161 | - - -- - | -- - | - - - - -
-
- return verifyCallResultFromTarget(target, success, returndata, errorMessage);- - |
-
162 | - - -- - | -- - | - - - - -
-
- }- - |
-
163 | - - -- - | -- - | - - - - -- - - - | -
164 | - - -- - | -- - | - - - - -
-
- /**- - |
-
165 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],- - |
-
166 | - - -- - | -- - | - - - - -
-
- * but performing a delegate call.- - |
-
167 | - - -- - | -- - | - - - - -
-
- *- - |
-
168 | - - -- - | -- - | - - - - -
-
- * _Available since v3.4._- - |
-
169 | - - -- - | -- - | - - - - -
-
- */- - |
-
170 | - - -- - | -- - | - - - - -
-
- function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {- - |
-
171 | - - -- - | -- - | - - - - -
-
- return functionDelegateCall(target, data, "Address: low-level delegate call failed");- - |
-
172 | - - -- - | -- - | - - - - -
-
- }- - |
-
173 | - - -- - | -- - | - - - - -- - - - | -
174 | - - -- - | -- - | - - - - -
-
- /**- - |
-
175 | - - -- - | -- - | - - - - -
-
- * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],- - |
-
176 | - - -- - | -- - | - - - - -
-
- * but performing a delegate call.- - |
-
177 | - - -- - | -- - | - - - - -
-
- *- - |
-
178 | - - -- - | -- - | - - - - -
-
- * _Available since v3.4._- - |
-
179 | - - -- - | -- - | - - - - -
-
- */- - |
-
180 | - - -- - | -- - | - - - - -
-
- function functionDelegateCall(- - |
-
181 | - - -- - | -- - | - - - - -
-
- address target,- - |
-
182 | - - -- - | -- - | - - - - -
-
- bytes memory data,- - |
-
183 | - - -- - | -- - | - - - - -
-
- string memory errorMessage- - |
-
184 | - - -- - | -- - | - - - - -
-
- ) internal returns (bytes memory) {- - |
-
185 | - - -- - | -- - | - - - - -
-
- (bool success, bytes memory returndata) = target.delegatecall(data);- - |
-
186 | - - -- - | -- - | - - - - -
-
- return verifyCallResultFromTarget(target, success, returndata, errorMessage);- - |
-
187 | - - -- - | -- - | - - - - -
-
- }- - |
-
188 | - - -- - | -- - | - - - - -- - - - | -
189 | - - -- - | -- - | - - - - -
-
- /**- - |
-
190 | - - -- - | -- - | - - - - -
-
- * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling- - |
-
191 | - - -- - | -- - | - - - - -
-
- * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.- - |
-
192 | - - -- - | -- - | - - - - -
-
- *- - |
-
193 | - - -- - | -- - | - - - - -
-
- * _Available since v4.8._- - |
-
194 | - - -- - | -- - | - - - - -
-
- */- - |
-
195 | - - -- - | -- - | - - - - -
-
- function verifyCallResultFromTarget(- - |
-
196 | - - -- - | -- - | - - - - -
-
- address target,- - |
-
197 | - - -- - | -- - | - - - - -
-
- bool success,- - |
-
198 | - - -- - | -- - | - - - - -
-
- bytes memory returndata,- - |
-
199 | - - -- - | -- - | - - - - -
-
- string memory errorMessage- - |
-
200 | - - -- - | -- - | - - - - -
-
- ) internal view returns (bytes memory) {- - |
-
201 | - - -- - | -- - | - - - - -
-
- if (success) {- - |
-
202 | - - -- - | -- - | - - - - -
-
- if (returndata.length == 0) {- - |
-
203 | - - -- - | -- - | - - - - -
-
- // only check isContract if the call was successful and the return data is empty- - |
-
204 | - - -- - | -- - | - - - - -
-
- // otherwise we already know that it was a contract- - |
-
205 | - - -- - | -- - | - - - - -
-
- require(isContract(target), "Address: call to non-contract");- - |
-
206 | - - -- - | -- - | - - - - -
-
- }- - |
-
207 | - - -- - | -- - | - - - - -
-
- return returndata;- - |
-
208 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
209 | - - -- - | -- - | - - - - -
-
- _revert(returndata, errorMessage);- - |
-
210 | - - -- - | -- - | - - - - -
-
- }- - |
-
211 | - - -- - | -- - | - - - - -
-
- }- - |
-
212 | - - -- - | -- - | - - - - -- - - - | -
213 | - - -- - | -- - | - - - - -
-
- /**- - |
-
214 | - - -- - | -- - | - - - - -
-
- * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the- - |
-
215 | - - -- - | -- - | - - - - -
-
- * revert reason or using the provided one.- - |
-
216 | - - -- - | -- - | - - - - -
-
- *- - |
-
217 | - - -- - | -- - | - - - - -
-
- * _Available since v4.3._- - |
-
218 | - - -- - | -- - | - - - - -
-
- */- - |
-
219 | - - -- - | -- - | - - - - -
-
- function verifyCallResult(- - |
-
220 | - - -- - | -- - | - - - - -
-
- bool success,- - |
-
221 | - - -- - | -- - | - - - - -
-
- bytes memory returndata,- - |
-
222 | - - -- - | -- - | - - - - -
-
- string memory errorMessage- - |
-
223 | - - -- - | -- - | - - - - -
-
- ) internal pure returns (bytes memory) {- - |
-
224 | - - -- - | -- - | - - - - -
-
- if (success) {- - |
-
225 | - - -- - | -- - | - - - - -
-
- return returndata;- - |
-
226 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
227 | - - -- - | -- - | - - - - -
-
- _revert(returndata, errorMessage);- - |
-
228 | - - -- - | -- - | - - - - -
-
- }- - |
-
229 | - - -- - | -- - | - - - - -
-
- }- - |
-
230 | - - -- - | -- - | - - - - -- - - - | -
231 | - - -- - | -- - | - - - - -
-
- function _revert(bytes memory returndata, string memory errorMessage) private pure {- - |
-
232 | - - -- - | -- - | - - - - -
-
- // Look for revert reason and bubble it up if present- - |
-
233 | - - -- - | -- - | - - - - -
-
- if (returndata.length > 0) {- - |
-
234 | - - -- - | -- - | - - - - -
-
- // The easiest way to bubble the revert reason is using memory via assembly- - |
-
235 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
236 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
237 | - - -- - | -- - | - - - - -
-
- let returndata_size := mload(returndata)- - |
-
238 | - - -- - | -- - | - - - - -
-
- revert(add(32, returndata), returndata_size)- - |
-
239 | - - -- - | -- - | - - - - -
-
- }- - |
-
240 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
241 | - - -- - | -- - | - - - - -
-
- revert(errorMessage);- - |
-
242 | - - -- - | -- - | - - - - -
-
- }- - |
-
243 | - - -- - | -- - | - - - - -
-
- }- - |
-
244 | - - -- - | -- - | - - - - -
-
- }- - |
-
245 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 1 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- /**- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @dev Provides information about the current execution context, including the- - |
-
8 | - - -- - | -- - | - - - - -
-
- * sender of the transaction and its data. While these are generally available- - |
-
9 | - - -- - | -- - | - - - - -
-
- * via msg.sender and msg.data, they should not be accessed in such a direct- - |
-
10 | - - -- - | -- - | - - - - -
-
- * manner, since when dealing with meta-transactions the account sending and- - |
-
11 | - - -- - | -- - | - - - - -
-
- * paying for execution may not be the actual sender (as far as an application- - |
-
12 | - - -- - | -- - | - - - - -
-
- * is concerned).- - |
-
13 | - - -- - | -- - | - - - - -
-
- *- - |
-
14 | - - -- - | -- - | - - - - -
-
- * This contract is only required for intermediate, library-like contracts.- - |
-
15 | - - -- - | -- - | - - - - -
-
- */- - |
-
16 | - - -- - | -- - | - - - - -
-
- abstract contract Context {- - |
-
17 | - - -- - | -- - | - - - - -
-
- function _msgSender() internal view virtual returns (address) {- - |
-
18 | - - -- - | -- - | - - - - -
-
- return msg.sender;- - |
-
19 | - - -- - | -- - | - - - - -
-
- }- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- function _msgData() internal view virtual returns (bytes calldata) {- - |
-
22 | - - -- - | -- - | - - - - -
-
- return msg.data;- - |
-
23 | - - -- - | -- - | - - - - -
-
- }- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- function _contextSuffixLength() internal view virtual returns (uint256) {- - |
-
26 | - - -- - | -- - | - - - - -
-
- return 0;- - |
-
27 | - - -- - | -- - | - - - - -
-
- }- - |
-
28 | - - -- - | -- - | - - - - -
-
- }- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -27 / 45 (60.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- // OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)- - |
-
3 | - - -- - | -- - | - - - - -
-
- // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.- - |
-
4 | - - -- - | -- - | - - - - -- - - - | -
5 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.0;- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- /**- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @dev Library for managing- - |
-
9 | - - -- - | -- - | - - - - -
-
- * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive- - |
-
10 | - - -- - | -- - | - - - - -
-
- * types.- - |
-
11 | - - -- - | -- - | - - - - -
-
- *- - |
-
12 | - - -- - | -- - | - - - - -
-
- * Sets have the following properties:- - |
-
13 | - - -- - | -- - | - - - - -
-
- *- - |
-
14 | - - -- - | -- - | - - - - -
-
- * - Elements are added, removed, and checked for existence in constant time- - |
-
15 | - - -- - | -- - | - - - - -
-
- * (O(1)).- - |
-
16 | - - -- - | -- - | - - - - -
-
- * - Elements are enumerated in O(n). No guarantees are made on the ordering.- - |
-
17 | - - -- - | -- - | - - - - -
-
- *- - |
-
18 | - - -- - | -- - | - - - - -
-
- * ```solidity- - |
-
19 | - - -- - | -- - | - - - - -
-
- * contract Example {- - |
-
20 | - - -- - | -- - | - - - - -
-
- * // Add the library methods- - |
-
21 | - - -- - | -- - | - - - - -
-
- * using EnumerableSet for EnumerableSet.AddressSet;- - |
-
22 | - - -- - | -- - | - - - - -
-
- *- - |
-
23 | - - -- - | -- - | - - - - -
-
- * // Declare a set state variable- - |
-
24 | - - -- - | -- - | - - - - -
-
- * EnumerableSet.AddressSet private mySet;- - |
-
25 | - - -- - | -- - | - - - - -
-
- * }- - |
-
26 | - - -- - | -- - | - - - - -
-
- * ```- - |
-
27 | - - -- - | -- - | - - - - -
-
- *- - |
-
28 | - - -- - | -- - | - - - - -
-
- * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)- - |
-
29 | - - -- - | -- - | - - - - -
-
- * and `uint256` (`UintSet`) are supported.- - |
-
30 | - - -- - | -- - | - - - - -
-
- *- - |
-
31 | - - -- - | -- - | - - - - -
-
- * [WARNING]- - |
-
32 | - - -- - | -- - | - - - - -
-
- * ====- - |
-
33 | - - -- - | -- - | - - - - -
-
- * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure- - |
-
34 | - - -- - | -- - | - - - - -
-
- * unusable.- - |
-
35 | - - -- - | -- - | - - - - -
-
- * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.- - |
-
36 | - - -- - | -- - | - - - - -
-
- *- - |
-
37 | - - -- - | -- - | - - - - -
-
- * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an- - |
-
38 | - - -- - | -- - | - - - - -
-
- * array of EnumerableSet.- - |
-
39 | - - -- - | -- - | - - - - -
-
- * ====- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- library EnumerableSet {- - |
-
42 | - - -- - | -- - | - - - - -
-
- // To implement this library for multiple types with as little code- - |
-
43 | - - -- - | -- - | - - - - -
-
- // repetition as possible, we write it in terms of a generic Set type with- - |
-
44 | - - -- - | -- - | - - - - -
-
- // bytes32 values.- - |
-
45 | - - -- - | -- - | - - - - -
-
- // The Set implementation uses private functions, and user-facing- - |
-
46 | - - -- - | -- - | - - - - -
-
- // implementations (such as AddressSet) are just wrappers around the- - |
-
47 | - - -- - | -- - | - - - - -
-
- // underlying Set.- - |
-
48 | - - -- - | -- - | - - - - -
-
- // This means that we can only create new EnumerableSets for types that fit- - |
-
49 | - - -- - | -- - | - - - - -
-
- // in bytes32.- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- struct Set {- - |
-
52 | - - -- - | -- - | - - - - -
-
- // Storage of set values- - |
-
53 | - - -- - | -- - | - - - - -
-
- bytes32[] _values;- - |
-
54 | - - -- - | -- - | - - - - -
-
- // Position of the value in the `values` array, plus 1 because index 0- - |
-
55 | - - -- - | -- - | - - - - -
-
- // means a value is not in the set.- - |
-
56 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => uint256) _indexes;- - |
-
57 | - - -- - | -- - | - - - - -
-
- }- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- /**- - |
-
60 | - - -- - | -- - | - - - - -
-
- * @dev Add a value to a set. O(1).- - |
-
61 | - - -- - | -- - | - - - - -
-
- *- - |
-
62 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was added to the set, that is if it was not- - |
-
63 | - - -- - | -- - | - - - - -
-
- * already present.- - |
-
64 | - - -- - | -- - | - - - - -
-
- */- - |
-
65 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function _add(Set storage set, bytes32 value) private returns (bool) {- - |
-
66 | - - -- - | -- - | - - - - -
-
- if (!_contains(set, value)) {- - |
-
67 | - - -
-
- √
-
- |
- - - | - - - - -
-
- set._values.push(value);- - |
-
68 | - - -- - | -- - | - - - - -
-
- // The value is stored at length-1, but we add 1 to all indexes- - |
-
69 | - - -- - | -- - | - - - - -
-
- // and use 0 as a sentinel value- - |
-
70 | - - -
-
- √
-
- |
- - - | - - - - -
-
- set._indexes[value] = set._values.length;- - |
-
71 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return true;- - |
-
72 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
73 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return false;- - |
-
74 | - - -- - | -- - | - - - - -
-
- }- - |
-
75 | - - -- - | -- - | - - - - -
-
- }- - |
-
76 | - - -- - | -- - | - - - - -- - - - | -
77 | - - -- - | -- - | - - - - -
-
- /**- - |
-
78 | - - -- - | -- - | - - - - -
-
- * @dev Removes a value from a set. O(1).- - |
-
79 | - - -- - | -- - | - - - - -
-
- *- - |
-
80 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was removed from the set, that is if it was- - |
-
81 | - - -- - | -- - | - - - - -
-
- * present.- - |
-
82 | - - -- - | -- - | - - - - -
-
- */- - |
-
83 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function _remove(Set storage set, bytes32 value) private returns (bool) {- - |
-
84 | - - -- - | -- - | - - - - -
-
- // We read and store the value's index to prevent multiple reads from the same storage slot- - |
-
85 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 valueIndex = set._indexes[value];- - |
-
86 | - - -- - | -- - | - - - - -- - - - | -
87 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (valueIndex != 0) {- - |
-
88 | - - -- - | -- - | - - - - -
-
- // Equivalent to contains(set, value)- - |
-
89 | - - -- - | -- - | - - - - -
-
- // To delete an element from the _values array in O(1), we swap the element to delete with the last one in- - |
-
90 | - - -- - | -- - | - - - - -
-
- // the array, and then remove the last element (sometimes called as 'swap and pop').- - |
-
91 | - - -- - | -- - | - - - - -
-
- // This modifies the order of the array, as noted in {at}.- - |
-
92 | - - -- - | -- - | - - - - -- - - - | -
93 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 toDeleteIndex = valueIndex - 1;- - |
-
94 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 lastIndex = set._values.length - 1;- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (lastIndex != toDeleteIndex) {- - |
-
97 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 lastValue = set._values[lastIndex];- - |
-
98 | - - -- - | -- - | - - - - -- - - - | -
99 | - - -- - | -- - | - - - - -
-
- // Move the last value to the index where the value to delete is- - |
-
100 | - - -
-
- √
-
- |
- - - | - - - - -
-
- set._values[toDeleteIndex] = lastValue;- - |
-
101 | - - -- - | -- - | - - - - -
-
- // Update the index for the moved value- - |
-
102 | - - -
-
- √
-
- |
- - - | - - - - -
-
- set._indexes[lastValue] = valueIndex; // Replace lastValue's index to valueIndex- - |
-
103 | - - -- - | -- - | - - - - -
-
- }- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -- - | -- - | - - - - -
-
- // Delete the slot where the moved value was stored- - |
-
106 | - - -
-
- √
-
- |
- - - | - - - - -
-
- set._values.pop();- - |
-
107 | - - -- - | -- - | - - - - -- - - - | -
108 | - - -- - | -- - | - - - - -
-
- // Delete the index for the deleted slot- - |
-
109 | - - -
-
- √
-
- |
- - - | - - - - -
-
- delete set._indexes[value];- - |
-
110 | - - -- - | -- - | - - - - -- - - - | -
111 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return true;- - |
-
112 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
113 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return false;- - |
-
114 | - - -- - | -- - | - - - - -
-
- }- - |
-
115 | - - -- - | -- - | - - - - -
-
- }- - |
-
116 | - - -- - | -- - | - - - - -- - - - | -
117 | - - -- - | -- - | - - - - -
-
- /**- - |
-
118 | - - -- - | -- - | - - - - -
-
- * @dev Returns true if the value is in the set. O(1).- - |
-
119 | - - -- - | -- - | - - - - -
-
- */- - |
-
120 | - - -- - | -- - | - - - - -
-
- function _contains(Set storage set, bytes32 value) private view returns (bool) {- - |
-
121 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return set._indexes[value] != 0;- - |
-
122 | - - -- - | -- - | - - - - -
-
- }- - |
-
123 | - - -- - | -- - | - - - - -- - - - | -
124 | - - -- - | -- - | - - - - -
-
- /**- - |
-
125 | - - -- - | -- - | - - - - -
-
- * @dev Returns the number of values on the set. O(1).- - |
-
126 | - - -- - | -- - | - - - - -
-
- */- - |
-
127 | - - -- - | -- - | - - - - -
-
- function _length(Set storage set) private view returns (uint256) {- - |
-
128 | - - -- - | -- - | - - - - -
-
- return set._values.length;- - |
-
129 | - - -- - | -- - | - - - - -
-
- }- - |
-
130 | - - -- - | -- - | - - - - -- - - - | -
131 | - - -- - | -- - | - - - - -
-
- /**- - |
-
132 | - - -- - | -- - | - - - - -
-
- * @dev Returns the value stored at position `index` in the set. O(1).- - |
-
133 | - - -- - | -- - | - - - - -
-
- *- - |
-
134 | - - -- - | -- - | - - - - -
-
- * Note that there are no guarantees on the ordering of values inside the- - |
-
135 | - - -- - | -- - | - - - - -
-
- * array, and it may change when more values are added or removed.- - |
-
136 | - - -- - | -- - | - - - - -
-
- *- - |
-
137 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
138 | - - -- - | -- - | - - - - -
-
- *- - |
-
139 | - - -- - | -- - | - - - - -
-
- * - `index` must be strictly less than {length}.- - |
-
140 | - - -- - | -- - | - - - - -
-
- */- - |
-
141 | - - -- - | -- - | - - - - -
-
- function _at(Set storage set, uint256 index) private view returns (bytes32) {- - |
-
142 | - - -- - | -- - | - - - - -
-
- return set._values[index];- - |
-
143 | - - -- - | -- - | - - - - -
-
- }- - |
-
144 | - - -- - | -- - | - - - - -- - - - | -
145 | - - -- - | -- - | - - - - -
-
- /**- - |
-
146 | - - -- - | -- - | - - - - -
-
- * @dev Return the entire set in an array- - |
-
147 | - - -- - | -- - | - - - - -
-
- *- - |
-
148 | - - -- - | -- - | - - - - -
-
- * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed- - |
-
149 | - - -- - | -- - | - - - - -
-
- * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that- - |
-
150 | - - -- - | -- - | - - - - -
-
- * this function has an unbounded cost, and using it as part of a state-changing function may render the function- - |
-
151 | - - -- - | -- - | - - - - -
-
- * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.- - |
-
152 | - - -- - | -- - | - - - - -
-
- */- - |
-
153 | - - -- - | -- - | - - - - -
-
- function _values(Set storage set) private view returns (bytes32[] memory) {- - |
-
154 | - - -- - | -- - | - - - - -
-
- return set._values;- - |
-
155 | - - -- - | -- - | - - - - -
-
- }- - |
-
156 | - - -- - | -- - | - - - - -- - - - | -
157 | - - -- - | -- - | - - - - -
-
- // Bytes32Set- - |
-
158 | - - -- - | -- - | - - - - -- - - - | -
159 | - - -- - | -- - | - - - - -
-
- struct Bytes32Set {- - |
-
160 | - - -- - | -- - | - - - - -
-
- Set _inner;- - |
-
161 | - - -- - | -- - | - - - - -
-
- }- - |
-
162 | - - -- - | -- - | - - - - -- - - - | -
163 | - - -- - | -- - | - - - - -
-
- /**- - |
-
164 | - - -- - | -- - | - - - - -
-
- * @dev Add a value to a set. O(1).- - |
-
165 | - - -- - | -- - | - - - - -
-
- *- - |
-
166 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was added to the set, that is if it was not- - |
-
167 | - - -- - | -- - | - - - - -
-
- * already present.- - |
-
168 | - - -- - | -- - | - - - - -
-
- */- - |
-
169 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {- - |
-
170 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return _add(set._inner, value);- - |
-
171 | - - -- - | -- - | - - - - -
-
- }- - |
-
172 | - - -- - | -- - | - - - - -- - - - | -
173 | - - -- - | -- - | - - - - -
-
- /**- - |
-
174 | - - -- - | -- - | - - - - -
-
- * @dev Removes a value from a set. O(1).- - |
-
175 | - - -- - | -- - | - - - - -
-
- *- - |
-
176 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was removed from the set, that is if it was- - |
-
177 | - - -- - | -- - | - - - - -
-
- * present.- - |
-
178 | - - -- - | -- - | - - - - -
-
- */- - |
-
179 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {- - |
-
180 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return _remove(set._inner, value);- - |
-
181 | - - -- - | -- - | - - - - -
-
- }- - |
-
182 | - - -- - | -- - | - - - - -- - - - | -
183 | - - -- - | -- - | - - - - -
-
- /**- - |
-
184 | - - -- - | -- - | - - - - -
-
- * @dev Returns true if the value is in the set. O(1).- - |
-
185 | - - -- - | -- - | - - - - -
-
- */- - |
-
186 | - - -- - | -- - | - - - - -
-
- function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {- - |
-
187 | - - -- - | -- - | - - - - -
-
- return _contains(set._inner, value);- - |
-
188 | - - -- - | -- - | - - - - -
-
- }- - |
-
189 | - - -- - | -- - | - - - - -- - - - | -
190 | - - -- - | -- - | - - - - -
-
- /**- - |
-
191 | - - -- - | -- - | - - - - -
-
- * @dev Returns the number of values in the set. O(1).- - |
-
192 | - - -- - | -- - | - - - - -
-
- */- - |
-
193 | - - -- - | -- - | - - - - -
-
- function length(Bytes32Set storage set) internal view returns (uint256) {- - |
-
194 | - - -- - | -- - | - - - - -
-
- return _length(set._inner);- - |
-
195 | - - -- - | -- - | - - - - -
-
- }- - |
-
196 | - - -- - | -- - | - - - - -- - - - | -
197 | - - -- - | -- - | - - - - -
-
- /**- - |
-
198 | - - -- - | -- - | - - - - -
-
- * @dev Returns the value stored at position `index` in the set. O(1).- - |
-
199 | - - -- - | -- - | - - - - -
-
- *- - |
-
200 | - - -- - | -- - | - - - - -
-
- * Note that there are no guarantees on the ordering of values inside the- - |
-
201 | - - -- - | -- - | - - - - -
-
- * array, and it may change when more values are added or removed.- - |
-
202 | - - -- - | -- - | - - - - -
-
- *- - |
-
203 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
204 | - - -- - | -- - | - - - - -
-
- *- - |
-
205 | - - -- - | -- - | - - - - -
-
- * - `index` must be strictly less than {length}.- - |
-
206 | - - -- - | -- - | - - - - -
-
- */- - |
-
207 | - - -- - | -- - | - - - - -
-
- function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {- - |
-
208 | - - -- - | -- - | - - - - -
-
- return _at(set._inner, index);- - |
-
209 | - - -- - | -- - | - - - - -
-
- }- - |
-
210 | - - -- - | -- - | - - - - -- - - - | -
211 | - - -- - | -- - | - - - - -
-
- /**- - |
-
212 | - - -- - | -- - | - - - - -
-
- * @dev Return the entire set in an array- - |
-
213 | - - -- - | -- - | - - - - -
-
- *- - |
-
214 | - - -- - | -- - | - - - - -
-
- * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed- - |
-
215 | - - -- - | -- - | - - - - -
-
- * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that- - |
-
216 | - - -- - | -- - | - - - - -
-
- * this function has an unbounded cost, and using it as part of a state-changing function may render the function- - |
-
217 | - - -- - | -- - | - - - - -
-
- * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.- - |
-
218 | - - -- - | -- - | - - - - -
-
- */- - |
-
219 | - - -- - | -- - | - - - - -
-
- function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {- - |
-
220 | - - -- - | -- - | - - - - -
-
- bytes32[] memory store = _values(set._inner);- - |
-
221 | - - -- - | -- - | - - - - -
-
- bytes32[] memory result;- - |
-
222 | - - -- - | -- - | - - - - -- - - - | -
223 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
224 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
225 | - - -- - | -- - | - - - - -
-
- result := store- - |
-
226 | - - -- - | -- - | - - - - -
-
- }- - |
-
227 | - - -- - | -- - | - - - - -- - - - | -
228 | - - -- - | -- - | - - - - -
-
- return result;- - |
-
229 | - - -- - | -- - | - - - - -
-
- }- - |
-
230 | - - -- - | -- - | - - - - -- - - - | -
231 | - - -- - | -- - | - - - - -
-
- // AddressSet- - |
-
232 | - - -- - | -- - | - - - - -- - - - | -
233 | - - -- - | -- - | - - - - -
-
- struct AddressSet {- - |
-
234 | - - -- - | -- - | - - - - -
-
- Set _inner;- - |
-
235 | - - -- - | -- - | - - - - -
-
- }- - |
-
236 | - - -- - | -- - | - - - - -- - - - | -
237 | - - -- - | -- - | - - - - -
-
- /**- - |
-
238 | - - -- - | -- - | - - - - -
-
- * @dev Add a value to a set. O(1).- - |
-
239 | - - -- - | -- - | - - - - -
-
- *- - |
-
240 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was added to the set, that is if it was not- - |
-
241 | - - -- - | -- - | - - - - -
-
- * already present.- - |
-
242 | - - -- - | -- - | - - - - -
-
- */- - |
-
243 | - - -
-
- √
-
- |
- - - | - - - - -
-
- function add(AddressSet storage set, address value) internal returns (bool) {- - |
-
244 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return _add(set._inner, bytes32(uint256(uint160(value))));- - |
-
245 | - - -- - | -- - | - - - - -
-
- }- - |
-
246 | - - -- - | -- - | - - - - -- - - - | -
247 | - - -- - | -- - | - - - - -
-
- /**- - |
-
248 | - - -- - | -- - | - - - - -
-
- * @dev Removes a value from a set. O(1).- - |
-
249 | - - -- - | -- - | - - - - -
-
- *- - |
-
250 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was removed from the set, that is if it was- - |
-
251 | - - -- - | -- - | - - - - -
-
- * present.- - |
-
252 | - - -- - | -- - | - - - - -
-
- */- - |
-
253 | - - -
-
- √
-
- |
- - - | - - - - -
-
- function remove(AddressSet storage set, address value) internal returns (bool) {- - |
-
254 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return _remove(set._inner, bytes32(uint256(uint160(value))));- - |
-
255 | - - -- - | -- - | - - - - -
-
- }- - |
-
256 | - - -- - | -- - | - - - - -- - - - | -
257 | - - -- - | -- - | - - - - -
-
- /**- - |
-
258 | - - -- - | -- - | - - - - -
-
- * @dev Returns true if the value is in the set. O(1).- - |
-
259 | - - -- - | -- - | - - - - -
-
- */- - |
-
260 | - - -- - | -- - | - - - - -
-
- function contains(AddressSet storage set, address value) internal view returns (bool) {- - |
-
261 | - - -- - | -- - | - - - - -
-
- return _contains(set._inner, bytes32(uint256(uint160(value))));- - |
-
262 | - - -- - | -- - | - - - - -
-
- }- - |
-
263 | - - -- - | -- - | - - - - -- - - - | -
264 | - - -- - | -- - | - - - - -
-
- /**- - |
-
265 | - - -- - | -- - | - - - - -
-
- * @dev Returns the number of values in the set. O(1).- - |
-
266 | - - -- - | -- - | - - - - -
-
- */- - |
-
267 | - - -- - | -- - | - - - - -
-
- function length(AddressSet storage set) internal view returns (uint256) {- - |
-
268 | - - -- - | -- - | - - - - -
-
- return _length(set._inner);- - |
-
269 | - - -- - | -- - | - - - - -
-
- }- - |
-
270 | - - -- - | -- - | - - - - -- - - - | -
271 | - - -- - | -- - | - - - - -
-
- /**- - |
-
272 | - - -- - | -- - | - - - - -
-
- * @dev Returns the value stored at position `index` in the set. O(1).- - |
-
273 | - - -- - | -- - | - - - - -
-
- *- - |
-
274 | - - -- - | -- - | - - - - -
-
- * Note that there are no guarantees on the ordering of values inside the- - |
-
275 | - - -- - | -- - | - - - - -
-
- * array, and it may change when more values are added or removed.- - |
-
276 | - - -- - | -- - | - - - - -
-
- *- - |
-
277 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
278 | - - -- - | -- - | - - - - -
-
- *- - |
-
279 | - - -- - | -- - | - - - - -
-
- * - `index` must be strictly less than {length}.- - |
-
280 | - - -- - | -- - | - - - - -
-
- */- - |
-
281 | - - -- - | -- - | - - - - -
-
- function at(AddressSet storage set, uint256 index) internal view returns (address) {- - |
-
282 | - - -- - | -- - | - - - - -
-
- return address(uint160(uint256(_at(set._inner, index))));- - |
-
283 | - - -- - | -- - | - - - - -
-
- }- - |
-
284 | - - -- - | -- - | - - - - -- - - - | -
285 | - - -- - | -- - | - - - - -
-
- /**- - |
-
286 | - - -- - | -- - | - - - - -
-
- * @dev Return the entire set in an array- - |
-
287 | - - -- - | -- - | - - - - -
-
- *- - |
-
288 | - - -- - | -- - | - - - - -
-
- * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed- - |
-
289 | - - -- - | -- - | - - - - -
-
- * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that- - |
-
290 | - - -- - | -- - | - - - - -
-
- * this function has an unbounded cost, and using it as part of a state-changing function may render the function- - |
-
291 | - - -- - | -- - | - - - - -
-
- * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.- - |
-
292 | - - -- - | -- - | - - - - -
-
- */- - |
-
293 | - - -- - | -- - | - - - - -
-
- function values(AddressSet storage set) internal view returns (address[] memory) {- - |
-
294 | - - -- - | -- - | - - - - -
-
- bytes32[] memory store = _values(set._inner);- - |
-
295 | - - -- - | -- - | - - - - -
-
- address[] memory result;- - |
-
296 | - - -- - | -- - | - - - - -- - - - | -
297 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
298 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
299 | - - -- - | -- - | - - - - -
-
- result := store- - |
-
300 | - - -- - | -- - | - - - - -
-
- }- - |
-
301 | - - -- - | -- - | - - - - -- - - - | -
302 | - - -- - | -- - | - - - - -
-
- return result;- - |
-
303 | - - -- - | -- - | - - - - -
-
- }- - |
-
304 | - - -- - | -- - | - - - - -- - - - | -
305 | - - -- - | -- - | - - - - -
-
- // UintSet- - |
-
306 | - - -- - | -- - | - - - - -- - - - | -
307 | - - -- - | -- - | - - - - -
-
- struct UintSet {- - |
-
308 | - - -- - | -- - | - - - - -
-
- Set _inner;- - |
-
309 | - - -- - | -- - | - - - - -
-
- }- - |
-
310 | - - -- - | -- - | - - - - -- - - - | -
311 | - - -- - | -- - | - - - - -
-
- /**- - |
-
312 | - - -- - | -- - | - - - - -
-
- * @dev Add a value to a set. O(1).- - |
-
313 | - - -- - | -- - | - - - - -
-
- *- - |
-
314 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was added to the set, that is if it was not- - |
-
315 | - - -- - | -- - | - - - - -
-
- * already present.- - |
-
316 | - - -- - | -- - | - - - - -
-
- */- - |
-
317 | - - -- - | -- - | - - - - -
-
- function add(UintSet storage set, uint256 value) internal returns (bool) {- - |
-
318 | - - -- - | -- - | - - - - -
-
- return _add(set._inner, bytes32(value));- - |
-
319 | - - -- - | -- - | - - - - -
-
- }- - |
-
320 | - - -- - | -- - | - - - - -- - - - | -
321 | - - -- - | -- - | - - - - -
-
- /**- - |
-
322 | - - -- - | -- - | - - - - -
-
- * @dev Removes a value from a set. O(1).- - |
-
323 | - - -- - | -- - | - - - - -
-
- *- - |
-
324 | - - -- - | -- - | - - - - -
-
- * Returns true if the value was removed from the set, that is if it was- - |
-
325 | - - -- - | -- - | - - - - -
-
- * present.- - |
-
326 | - - -- - | -- - | - - - - -
-
- */- - |
-
327 | - - -- - | -- - | - - - - -
-
- function remove(UintSet storage set, uint256 value) internal returns (bool) {- - |
-
328 | - - -- - | -- - | - - - - -
-
- return _remove(set._inner, bytes32(value));- - |
-
329 | - - -- - | -- - | - - - - -
-
- }- - |
-
330 | - - -- - | -- - | - - - - -- - - - | -
331 | - - -- - | -- - | - - - - -
-
- /**- - |
-
332 | - - -- - | -- - | - - - - -
-
- * @dev Returns true if the value is in the set. O(1).- - |
-
333 | - - -- - | -- - | - - - - -
-
- */- - |
-
334 | - - -- - | -- - | - - - - -
-
- function contains(UintSet storage set, uint256 value) internal view returns (bool) {- - |
-
335 | - - -- - | -- - | - - - - -
-
- return _contains(set._inner, bytes32(value));- - |
-
336 | - - -- - | -- - | - - - - -
-
- }- - |
-
337 | - - -- - | -- - | - - - - -- - - - | -
338 | - - -- - | -- - | - - - - -
-
- /**- - |
-
339 | - - -- - | -- - | - - - - -
-
- * @dev Returns the number of values in the set. O(1).- - |
-
340 | - - -- - | -- - | - - - - -
-
- */- - |
-
341 | - - -- - | -- - | - - - - -
-
- function length(UintSet storage set) internal view returns (uint256) {- - |
-
342 | - - -- - | -- - | - - - - -
-
- return _length(set._inner);- - |
-
343 | - - -- - | -- - | - - - - -
-
- }- - |
-
344 | - - -- - | -- - | - - - - -- - - - | -
345 | - - -- - | -- - | - - - - -
-
- /**- - |
-
346 | - - -- - | -- - | - - - - -
-
- * @dev Returns the value stored at position `index` in the set. O(1).- - |
-
347 | - - -- - | -- - | - - - - -
-
- *- - |
-
348 | - - -- - | -- - | - - - - -
-
- * Note that there are no guarantees on the ordering of values inside the- - |
-
349 | - - -- - | -- - | - - - - -
-
- * array, and it may change when more values are added or removed.- - |
-
350 | - - -- - | -- - | - - - - -
-
- *- - |
-
351 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
352 | - - -- - | -- - | - - - - -
-
- *- - |
-
353 | - - -- - | -- - | - - - - -
-
- * - `index` must be strictly less than {length}.- - |
-
354 | - - -- - | -- - | - - - - -
-
- */- - |
-
355 | - - -- - | -- - | - - - - -
-
- function at(UintSet storage set, uint256 index) internal view returns (uint256) {- - |
-
356 | - - -- - | -- - | - - - - -
-
- return uint256(_at(set._inner, index));- - |
-
357 | - - -- - | -- - | - - - - -
-
- }- - |
-
358 | - - -- - | -- - | - - - - -- - - - | -
359 | - - -- - | -- - | - - - - -
-
- /**- - |
-
360 | - - -- - | -- - | - - - - -
-
- * @dev Return the entire set in an array- - |
-
361 | - - -- - | -- - | - - - - -
-
- *- - |
-
362 | - - -- - | -- - | - - - - -
-
- * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed- - |
-
363 | - - -- - | -- - | - - - - -
-
- * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that- - |
-
364 | - - -- - | -- - | - - - - -
-
- * this function has an unbounded cost, and using it as part of a state-changing function may render the function- - |
-
365 | - - -- - | -- - | - - - - -
-
- * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.- - |
-
366 | - - -- - | -- - | - - - - -
-
- */- - |
-
367 | - - -- - | -- - | - - - - -
-
- function values(UintSet storage set) internal view returns (uint256[] memory) {- - |
-
368 | - - -- - | -- - | - - - - -
-
- bytes32[] memory store = _values(set._inner);- - |
-
369 | - - -- - | -- - | - - - - -
-
- uint256[] memory result;- - |
-
370 | - - -- - | -- - | - - - - -- - - - | -
371 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
372 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
373 | - - -- - | -- - | - - - - -
-
- result := store- - |
-
374 | - - -- - | -- - | - - - - -
-
- }- - |
-
375 | - - -- - | -- - | - - - - -- - - - | -
376 | - - -- - | -- - | - - - - -
-
- return result;- - |
-
377 | - - -- - | -- - | - - - - -
-
- }- - |
-
378 | - - -- - | -- - | - - - - -
-
- }- - |
-
379 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 5 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: AGPL-3.0-only- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity >=0.8.0;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- /// @notice Arithmetic library with operations for fixed-point numbers.- - |
-
5 | - - -- - | -- - | - - - - -
-
- /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol)- - |
-
6 | - - -- - | -- - | - - - - -
-
- /// @author Inspired by USM (https://github.com/usmfum/USM/blob/master/contracts/WadMath.sol)- - |
-
7 | - - -- - | -- - | - - - - -
-
- library FixedPointMathLib {- - |
-
8 | - - -- - | -- - | - - - - -
-
- /*//////////////////////////////////////////////////////////////- - |
-
9 | - - -- - | -- - | - - - - -
-
- SIMPLIFIED FIXED POINT OPERATIONS- - |
-
10 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- uint256 internal constant MAX_UINT256 = 2**256 - 1;- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- uint256 internal constant WAD = 1e18; // The scalar of ETH and most ERC20s.- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- function mulWadDown(uint256 x, uint256 y) internal pure returns (uint256) {- - |
-
17 | - - -- - | -- - | - - - - -
-
- return mulDivDown(x, y, WAD); // Equivalent to (x * y) / WAD rounded down.- - |
-
18 | - - -- - | -- - | - - - - -
-
- }- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- function mulWadUp(uint256 x, uint256 y) internal pure returns (uint256) {- - |
-
21 | - - -- - | -- - | - - - - -
-
- return mulDivUp(x, y, WAD); // Equivalent to (x * y) / WAD rounded up.- - |
-
22 | - - -- - | -- - | - - - - -
-
- }- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- function divWadDown(uint256 x, uint256 y) internal pure returns (uint256) {- - |
-
25 | - - -- - | -- - | - - - - -
-
- return mulDivDown(x, WAD, y); // Equivalent to (x * WAD) / y rounded down.- - |
-
26 | - - -- - | -- - | - - - - -
-
- }- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- function divWadUp(uint256 x, uint256 y) internal pure returns (uint256) {- - |
-
29 | - - -- - | -- - | - - - - -
-
- return mulDivUp(x, WAD, y); // Equivalent to (x * WAD) / y rounded up.- - |
-
30 | - - -- - | -- - | - - - - -
-
- }- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /*//////////////////////////////////////////////////////////////- - |
-
33 | - - -- - | -- - | - - - - -
-
- LOW LEVEL FIXED POINT OPERATIONS- - |
-
34 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- function mulDivDown(- - |
-
37 | - - -- - | -- - | - - - - -
-
- uint256 x,- - |
-
38 | - - -- - | -- - | - - - - -
-
- uint256 y,- - |
-
39 | - - -- - | -- - | - - - - -
-
- uint256 denominator- - |
-
40 | - - -- - | -- - | - - - - -
-
- ) internal pure returns (uint256 z) {- - |
-
41 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
42 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
43 | - - -- - | -- - | - - - - -
-
- // Equivalent to require(denominator != 0 && (y == 0 || x <= type(uint256).max / y))- - |
-
44 | - - -- - | -- - | - - - - -
-
- if iszero(mul(denominator, iszero(mul(y, gt(x, div(MAX_UINT256, y)))))) {- - |
-
45 | - - -- - | -- - | - - - - -
-
- revert(0, 0)- - |
-
46 | - - -- - | -- - | - - - - -
-
- }- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -- - | - - - - -
-
- // Divide x * y by the denominator.- - |
-
49 | - - -- - | -- - | - - - - -
-
- z := div(mul(x, y), denominator)- - |
-
50 | - - -- - | -- - | - - - - -
-
- }- - |
-
51 | - - -- - | -- - | - - - - -
-
- }- - |
-
52 | - - -- - | -- - | - - - - -- - - - | -
53 | - - -- - | -- - | - - - - -
-
- function mulDivUp(- - |
-
54 | - - -- - | -- - | - - - - -
-
- uint256 x,- - |
-
55 | - - -- - | -- - | - - - - -
-
- uint256 y,- - |
-
56 | - - -- - | -- - | - - - - -
-
- uint256 denominator- - |
-
57 | - - -- - | -- - | - - - - -
-
- ) internal pure returns (uint256 z) {- - |
-
58 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
59 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
60 | - - -- - | -- - | - - - - -
-
- // Equivalent to require(denominator != 0 && (y == 0 || x <= type(uint256).max / y))- - |
-
61 | - - -- - | -- - | - - - - -
-
- if iszero(mul(denominator, iszero(mul(y, gt(x, div(MAX_UINT256, y)))))) {- - |
-
62 | - - -- - | -- - | - - - - -
-
- revert(0, 0)- - |
-
63 | - - -- - | -- - | - - - - -
-
- }- - |
-
64 | - - -- - | -- - | - - - - -- - - - | -
65 | - - -- - | -- - | - - - - -
-
- // If x * y modulo the denominator is strictly greater than 0,- - |
-
66 | - - -- - | -- - | - - - - -
-
- // 1 is added to round up the division of x * y by the denominator.- - |
-
67 | - - -- - | -- - | - - - - -
-
- z := add(gt(mod(mul(x, y), denominator), 0), div(mul(x, y), denominator))- - |
-
68 | - - -- - | -- - | - - - - -
-
- }- - |
-
69 | - - -- - | -- - | - - - - -
-
- }- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- function rpow(- - |
-
72 | - - -- - | -- - | - - - - -
-
- uint256 x,- - |
-
73 | - - -- - | -- - | - - - - -
-
- uint256 n,- - |
-
74 | - - -- - | -- - | - - - - -
-
- uint256 scalar- - |
-
75 | - - -- - | -- - | - - - - -
-
- ) internal pure returns (uint256 z) {- - |
-
76 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
77 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
78 | - - -- - | -- - | - - - - -
-
- switch x- - |
-
79 | - - -- - | -- - | - - - - -
-
- case 0 {- - |
-
80 | - - -- - | -- - | - - - - -
-
- switch n- - |
-
81 | - - -- - | -- - | - - - - -
-
- case 0 {- - |
-
82 | - - -- - | -- - | - - - - -
-
- // 0 ** 0 = 1- - |
-
83 | - - -- - | -- - | - - - - -
-
- z := scalar- - |
-
84 | - - -- - | -- - | - - - - -
-
- }- - |
-
85 | - - -- - | -- - | - - - - -
-
- default {- - |
-
86 | - - -- - | -- - | - - - - -
-
- // 0 ** n = 0- - |
-
87 | - - -- - | -- - | - - - - -
-
- z := 0- - |
-
88 | - - -- - | -- - | - - - - -
-
- }- - |
-
89 | - - -- - | -- - | - - - - -
-
- }- - |
-
90 | - - -- - | -- - | - - - - -
-
- default {- - |
-
91 | - - -- - | -- - | - - - - -
-
- switch mod(n, 2)- - |
-
92 | - - -- - | -- - | - - - - -
-
- case 0 {- - |
-
93 | - - -- - | -- - | - - - - -
-
- // If n is even, store scalar in z for now.- - |
-
94 | - - -- - | -- - | - - - - -
-
- z := scalar- - |
-
95 | - - -- - | -- - | - - - - -
-
- }- - |
-
96 | - - -- - | -- - | - - - - -
-
- default {- - |
-
97 | - - -- - | -- - | - - - - -
-
- // If n is odd, store x in z for now.- - |
-
98 | - - -- - | -- - | - - - - -
-
- z := x- - |
-
99 | - - -- - | -- - | - - - - -
-
- }- - |
-
100 | - - -- - | -- - | - - - - -- - - - | -
101 | - - -- - | -- - | - - - - -
-
- // Shifting right by 1 is like dividing by 2.- - |
-
102 | - - -- - | -- - | - - - - -
-
- let half := shr(1, scalar)- - |
-
103 | - - -- - | -- - | - - - - -- - - - | -
104 | - - -- - | -- - | - - - - -
-
- for {- - |
-
105 | - - -- - | -- - | - - - - -
-
- // Shift n right by 1 before looping to halve it.- - |
-
106 | - - -- - | -- - | - - - - -
-
- n := shr(1, n)- - |
-
107 | - - -- - | -- - | - - - - -
-
- } n {- - |
-
108 | - - -- - | -- - | - - - - -
-
- // Shift n right by 1 each iteration to halve it.- - |
-
109 | - - -- - | -- - | - - - - -
-
- n := shr(1, n)- - |
-
110 | - - -- - | -- - | - - - - -
-
- } {- - |
-
111 | - - -- - | -- - | - - - - -
-
- // Revert immediately if x ** 2 would overflow.- - |
-
112 | - - -- - | -- - | - - - - -
-
- // Equivalent to iszero(eq(div(xx, x), x)) here.- - |
-
113 | - - -- - | -- - | - - - - -
-
- if shr(128, x) {- - |
-
114 | - - -- - | -- - | - - - - -
-
- revert(0, 0)- - |
-
115 | - - -- - | -- - | - - - - -
-
- }- - |
-
116 | - - -- - | -- - | - - - - -- - - - | -
117 | - - -- - | -- - | - - - - -
-
- // Store x squared.- - |
-
118 | - - -- - | -- - | - - - - -
-
- let xx := mul(x, x)- - |
-
119 | - - -- - | -- - | - - - - -- - - - | -
120 | - - -- - | -- - | - - - - -
-
- // Round to the nearest number.- - |
-
121 | - - -- - | -- - | - - - - -
-
- let xxRound := add(xx, half)- - |
-
122 | - - -- - | -- - | - - - - -- - - - | -
123 | - - -- - | -- - | - - - - -
-
- // Revert if xx + half overflowed.- - |
-
124 | - - -- - | -- - | - - - - -
-
- if lt(xxRound, xx) {- - |
-
125 | - - -- - | -- - | - - - - -
-
- revert(0, 0)- - |
-
126 | - - -- - | -- - | - - - - -
-
- }- - |
-
127 | - - -- - | -- - | - - - - -- - - - | -
128 | - - -- - | -- - | - - - - -
-
- // Set x to scaled xxRound.- - |
-
129 | - - -- - | -- - | - - - - -
-
- x := div(xxRound, scalar)- - |
-
130 | - - -- - | -- - | - - - - -- - - - | -
131 | - - -- - | -- - | - - - - -
-
- // If n is even:- - |
-
132 | - - -- - | -- - | - - - - -
-
- if mod(n, 2) {- - |
-
133 | - - -- - | -- - | - - - - -
-
- // Compute z * x.- - |
-
134 | - - -- - | -- - | - - - - -
-
- let zx := mul(z, x)- - |
-
135 | - - -- - | -- - | - - - - -- - - - | -
136 | - - -- - | -- - | - - - - -
-
- // If z * x overflowed:- - |
-
137 | - - -- - | -- - | - - - - -
-
- if iszero(eq(div(zx, x), z)) {- - |
-
138 | - - -- - | -- - | - - - - -
-
- // Revert if x is non-zero.- - |
-
139 | - - -- - | -- - | - - - - -
-
- if iszero(iszero(x)) {- - |
-
140 | - - -- - | -- - | - - - - -
-
- revert(0, 0)- - |
-
141 | - - -- - | -- - | - - - - -
-
- }- - |
-
142 | - - -- - | -- - | - - - - -
-
- }- - |
-
143 | - - -- - | -- - | - - - - -- - - - | -
144 | - - -- - | -- - | - - - - -
-
- // Round to the nearest number.- - |
-
145 | - - -- - | -- - | - - - - -
-
- let zxRound := add(zx, half)- - |
-
146 | - - -- - | -- - | - - - - -- - - - | -
147 | - - -- - | -- - | - - - - -
-
- // Revert if zx + half overflowed.- - |
-
148 | - - -- - | -- - | - - - - -
-
- if lt(zxRound, zx) {- - |
-
149 | - - -- - | -- - | - - - - -
-
- revert(0, 0)- - |
-
150 | - - -- - | -- - | - - - - -
-
- }- - |
-
151 | - - -- - | -- - | - - - - -- - - - | -
152 | - - -- - | -- - | - - - - -
-
- // Return properly scaled zxRound.- - |
-
153 | - - -- - | -- - | - - - - -
-
- z := div(zxRound, scalar)- - |
-
154 | - - -- - | -- - | - - - - -
-
- }- - |
-
155 | - - -- - | -- - | - - - - -
-
- }- - |
-
156 | - - -- - | -- - | - - - - -
-
- }- - |
-
157 | - - -- - | -- - | - - - - -
-
- }- - |
-
158 | - - -- - | -- - | - - - - -
-
- }- - |
-
159 | - - -- - | -- - | - - - - -- - - - | -
160 | - - -- - | -- - | - - - - -
-
- /*//////////////////////////////////////////////////////////////- - |
-
161 | - - -- - | -- - | - - - - -
-
- GENERAL NUMBER UTILITIES- - |
-
162 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
163 | - - -- - | -- - | - - - - -- - - - | -
164 | - - -- - | -- - | - - - - -
-
- function sqrt(uint256 x) internal pure returns (uint256 z) {- - |
-
165 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
166 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
167 | - - -- - | -- - | - - - - -
-
- let y := x // We start y at x, which will help us make our initial estimate.- - |
-
168 | - - -- - | -- - | - - - - -- - - - | -
169 | - - -- - | -- - | - - - - -
-
- z := 181 // The "correct" value is 1, but this saves a multiplication later.- - |
-
170 | - - -- - | -- - | - - - - -- - - - | -
171 | - - -- - | -- - | - - - - -
-
- // This segment is to get a reasonable initial estimate for the Babylonian method. With a bad- - |
-
172 | - - -- - | -- - | - - - - -
-
- // start, the correct # of bits increases ~linearly each iteration instead of ~quadratically.- - |
-
173 | - - -- - | -- - | - - - - -- - - - | -
174 | - - -- - | -- - | - - - - -
-
- // We check y >= 2^(k + 8) but shift right by k bits- - |
-
175 | - - -- - | -- - | - - - - -
-
- // each branch to ensure that if x >= 256, then y >= 256.- - |
-
176 | - - -- - | -- - | - - - - -
-
- if iszero(lt(y, 0x10000000000000000000000000000000000)) {- - |
-
177 | - - -- - | -- - | - - - - -
-
- y := shr(128, y)- - |
-
178 | - - -- - | -- - | - - - - -
-
- z := shl(64, z)- - |
-
179 | - - -- - | -- - | - - - - -
-
- }- - |
-
180 | - - -- - | -- - | - - - - -
-
- if iszero(lt(y, 0x1000000000000000000)) {- - |
-
181 | - - -- - | -- - | - - - - -
-
- y := shr(64, y)- - |
-
182 | - - -- - | -- - | - - - - -
-
- z := shl(32, z)- - |
-
183 | - - -- - | -- - | - - - - -
-
- }- - |
-
184 | - - -- - | -- - | - - - - -
-
- if iszero(lt(y, 0x10000000000)) {- - |
-
185 | - - -- - | -- - | - - - - -
-
- y := shr(32, y)- - |
-
186 | - - -- - | -- - | - - - - -
-
- z := shl(16, z)- - |
-
187 | - - -- - | -- - | - - - - -
-
- }- - |
-
188 | - - -- - | -- - | - - - - -
-
- if iszero(lt(y, 0x1000000)) {- - |
-
189 | - - -- - | -- - | - - - - -
-
- y := shr(16, y)- - |
-
190 | - - -- - | -- - | - - - - -
-
- z := shl(8, z)- - |
-
191 | - - -- - | -- - | - - - - -
-
- }- - |
-
192 | - - -- - | -- - | - - - - -- - - - | -
193 | - - -- - | -- - | - - - - -
-
- // Goal was to get z*z*y within a small factor of x. More iterations could- - |
-
194 | - - -- - | -- - | - - - - -
-
- // get y in a tighter range. Currently, we will have y in [256, 256*2^16).- - |
-
195 | - - -- - | -- - | - - - - -
-
- // We ensured y >= 256 so that the relative difference between y and y+1 is small.- - |
-
196 | - - -- - | -- - | - - - - -
-
- // That's not possible if x < 256 but we can just verify those cases exhaustively.- - |
-
197 | - - -- - | -- - | - - - - -- - - - | -
198 | - - -- - | -- - | - - - - -
-
- // Now, z*z*y <= x < z*z*(y+1), and y <= 2^(16+8), and either y >= 256, or x < 256.- - |
-
199 | - - -- - | -- - | - - - - -
-
- // Correctness can be checked exhaustively for x < 256, so we assume y >= 256.- - |
-
200 | - - -- - | -- - | - - - - -
-
- // Then z*sqrt(y) is within sqrt(257)/sqrt(256) of sqrt(x), or about 20bps.- - |
-
201 | - - -- - | -- - | - - - - -- - - - | -
202 | - - -- - | -- - | - - - - -
-
- // For s in the range [1/256, 256], the estimate f(s) = (181/1024) * (s+1) is in the range- - |
-
203 | - - -- - | -- - | - - - - -
-
- // (1/2.84 * sqrt(s), 2.84 * sqrt(s)), with largest error when s = 1 and when s = 256 or 1/256.- - |
-
204 | - - -- - | -- - | - - - - -- - - - | -
205 | - - -- - | -- - | - - - - -
-
- // Since y is in [256, 256*2^16), let a = y/65536, so that a is in [1/256, 256). Then we can estimate- - |
-
206 | - - -- - | -- - | - - - - -
-
- // sqrt(y) using sqrt(65536) * 181/1024 * (a + 1) = 181/4 * (y + 65536)/65536 = 181 * (y + 65536)/2^18.- - |
-
207 | - - -- - | -- - | - - - - -- - - - | -
208 | - - -- - | -- - | - - - - -
-
- // There is no overflow risk here since y < 2^136 after the first branch above.- - |
-
209 | - - -- - | -- - | - - - - -
-
- z := shr(18, mul(z, add(y, 65536))) // A mul() is saved from starting z at 181.- - |
-
210 | - - -- - | -- - | - - - - -- - - - | -
211 | - - -- - | -- - | - - - - -
-
- // Given the worst case multiplicative error of 2.84 above, 7 iterations should be enough.- - |
-
212 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
213 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
214 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
215 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
216 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
217 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
218 | - - -- - | -- - | - - - - -
-
- z := shr(1, add(z, div(x, z)))- - |
-
219 | - - -- - | -- - | - - - - -- - - - | -
220 | - - -- - | -- - | - - - - -
-
- // If x+1 is a perfect square, the Babylonian method cycles between- - |
-
221 | - - -- - | -- - | - - - - -
-
- // floor(sqrt(x)) and ceil(sqrt(x)). This statement ensures we return floor.- - |
-
222 | - - -- - | -- - | - - - - -
-
- // See: https://en.wikipedia.org/wiki/Integer_square_root#Using_only_integer_division- - |
-
223 | - - -- - | -- - | - - - - -
-
- // Since the ceil is rare, we save gas on the assignment and repeat division in the rare case.- - |
-
224 | - - -- - | -- - | - - - - -
-
- // If you don't care whether the floor or ceil square root is returned, you can remove this statement.- - |
-
225 | - - -- - | -- - | - - - - -
-
- z := sub(z, lt(div(x, z), z))- - |
-
226 | - - -- - | -- - | - - - - -
-
- }- - |
-
227 | - - -- - | -- - | - - - - -
-
- }- - |
-
228 | - - -- - | -- - | - - - - -- - - - | -
229 | - - -- - | -- - | - - - - -
-
- function unsafeMod(uint256 x, uint256 y) internal pure returns (uint256 z) {- - |
-
230 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
231 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
232 | - - -- - | -- - | - - - - -
-
- // Mod x by y. Note this will return- - |
-
233 | - - -- - | -- - | - - - - -
-
- // 0 instead of reverting if y is zero.- - |
-
234 | - - -- - | -- - | - - - - -
-
- z := mod(x, y)- - |
-
235 | - - -- - | -- - | - - - - -
-
- }- - |
-
236 | - - -- - | -- - | - - - - -
-
- }- - |
-
237 | - - -- - | -- - | - - - - -- - - - | -
238 | - - -- - | -- - | - - - - -
-
- function unsafeDiv(uint256 x, uint256 y) internal pure returns (uint256 r) {- - |
-
239 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
240 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
241 | - - -- - | -- - | - - - - -
-
- // Divide x by y. Note this will return- - |
-
242 | - - -- - | -- - | - - - - -
-
- // 0 instead of reverting if y is zero.- - |
-
243 | - - -- - | -- - | - - - - -
-
- r := div(x, y)- - |
-
244 | - - -- - | -- - | - - - - -
-
- }- - |
-
245 | - - -- - | -- - | - - - - -
-
- }- - |
-
246 | - - -- - | -- - | - - - - -- - - - | -
247 | - - -- - | -- - | - - - - -
-
- function unsafeDivUp(uint256 x, uint256 y) internal pure returns (uint256 z) {- - |
-
248 | - - -- - | -- - | - - - - -
-
- /// @solidity memory-safe-assembly- - |
-
249 | - - -- - | -- - | - - - - -
-
- assembly {- - |
-
250 | - - -- - | -- - | - - - - -
-
- // Add 1 to x * y if x % y > 0. Note this will- - |
-
251 | - - -- - | -- - | - - - - -
-
- // return 0 instead of reverting if y is zero.- - |
-
252 | - - -- - | -- - | - - - - -
-
- z := add(gt(mod(x, y), 0), div(x, y))- - |
-
253 | - - -- - | -- - | - - - - -
-
- }- - |
-
254 | - - -- - | -- - | - - - - -
-
- }- - |
-
255 | - - -- - | -- - | - - - - -
-
- }- - |
-
256 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -13 / 19 (68.4%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IArbitrable} from 'interfaces/IArbitrable.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- /**- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @title Arbitrable- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @notice Arbitrable contract for The Graph to manage arbitrator and council- - |
-
9 | - - -- - | -- - | - - - - -
-
- */- - |
-
10 | - - -- - | -- - | - - - - -
-
- contract Arbitrable is IArbitrable {- - |
-
11 | - - -- - | -- - | - - - - -
-
- address private _arbitrator;- - |
-
12 | - - -- - | -- - | - - - - -
-
- address private _council;- - |
-
13 | - - -- - | -- - | - - - - -
-
- address private _pendingCouncil;- - |
-
14 | - - -- - | -- - | - - - - -- - - - | -
15 | - - -- - | -- - | - - - - -
-
- /**- - |
-
16 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is The Graph's Council- - |
-
17 | - - -- - | -- - | - - - - -
-
- */- - |
-
18 | - - -- - | -- - | - - - - -
-
- modifier onlyCouncil() {- - |
-
19 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (msg.sender != _council) revert Arbitrable_OnlyCouncil();- - |
-
20 | - - -- - | -- - | - - - - -
-
- _;- - |
-
21 | - - -- - | -- - | - - - - -
-
- }- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /**- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is the pending The Graph's Council- - |
-
25 | - - -- - | -- - | - - - - -
-
- */- - |
-
26 | - - -- - | -- - | - - - - -
-
- modifier onlyPendingCouncil() {- - |
-
27 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- if (msg.sender != _pendingCouncil) revert Arbitrable_OnlyPendingCouncil();- - |
-
28 | - - -- - | -- - | - - - - -
-
- _;- - |
-
29 | - - -- - | -- - | - - - - -
-
- }- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- /**- - |
-
32 | - - -- - | -- - | - - - - -
-
- * @notice Constructor- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @param __arbitrator The address of The Graph's Arbitrator- - |
-
34 | - - -- - | -- - | - - - - -
-
- * @param __council The address of The Graph's Council- - |
-
35 | - - -- - | -- - | - - - - -
-
- */- - |
-
36 | - - -- - | -- - | - - - - -
-
- constructor(address __arbitrator, address __council) {- - |
-
37 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setArbitrator(__arbitrator);- - |
-
38 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setCouncil(__council);- - |
-
39 | - - -- - | -- - | - - - - -
-
- }- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
42 | - - -- - | -- - | - - - - -
-
- function arbitrator() public view returns (address __arbitrator) {- - |
-
43 | - - -- - | -- - | - - - - -
-
- __arbitrator = _arbitrator;- - |
-
44 | - - -- - | -- - | - - - - -
-
- }- - |
-
45 | - - -- - | -- - | - - - - -- - - - | -
46 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
47 | - - -- - | -- - | - - - - -
-
- function council() public view returns (address __council) {- - |
-
48 | - - -- - | -- - | - - - - -
-
- __council = _council;- - |
-
49 | - - -- - | -- - | - - - - -
-
- }- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
52 | - - -- - | -- - | - - - - -
-
- function pendingCouncil() public view returns (address __pendingCouncil) {- - |
-
53 | - - -- - | -- - | - - - - -
-
- __pendingCouncil = _pendingCouncil;- - |
-
54 | - - -- - | -- - | - - - - -
-
- }- - |
-
55 | - - -- - | -- - | - - - - -- - - - | -
56 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
57 | - - -- - | -- - | - - - - -
-
- function validateArbitrator(address _caller) public view {- - |
-
58 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (_caller != _arbitrator) revert Arbitrable_OnlyArbitrator();- - |
-
59 | - - -- - | -- - | - - - - -
-
- }- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
62 | - - -- - | -- - | - - - - -
-
- function setArbitrator(address __arbitrator) external onlyCouncil {- - |
-
63 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setArbitrator(__arbitrator);- - |
-
64 | - - -- - | -- - | - - - - -
-
- }- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
67 | - - -- - | -- - | - - - - -
-
- function setPendingCouncil(address __pendingCouncil) external onlyCouncil {- - |
-
68 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setPendingCouncil(__pendingCouncil);- - |
-
69 | - - -- - | -- - | - - - - -
-
- }- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrable- - |
-
72 | - - -- - | -- - | - - - - -
-
- function confirmCouncil() external onlyPendingCouncil {- - |
-
73 | - - -- - | -- - | - - - - -
-
- _setCouncil(_pendingCouncil);- - |
-
74 | - - -- - | -- - | - - - - -
-
- delete _pendingCouncil;- - |
-
75 | - - -- - | -- - | - - - - -
-
- }- - |
-
76 | - - -- - | -- - | - - - - -- - - - | -
77 | - - -- - | -- - | - - - - -
-
- /**- - |
-
78 | - - -- - | -- - | - - - - -
-
- * @notice Sets the address of The Graph's Arbitrator- - |
-
79 | - - -- - | -- - | - - - - -
-
- * @param __arbitrator The address of The Graph's Arbitrator- - |
-
80 | - - -- - | -- - | - - - - -
-
- */- - |
-
81 | - - -- - | -- - | - - - - -
-
- function _setArbitrator(address __arbitrator) private {- - |
-
82 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _arbitrator = __arbitrator;- - |
-
83 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit SetArbitrator(__arbitrator);- - |
-
84 | - - -- - | -- - | - - - - -
-
- }- - |
-
85 | - - -- - | -- - | - - - - -- - - - | -
86 | - - -- - | -- - | - - - - -
-
- /**- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @notice Sets the address of The Graph's Council- - |
-
88 | - - -- - | -- - | - - - - -
-
- * @param __council The address of The Graph's Council- - |
-
89 | - - -- - | -- - | - - - - -
-
- */- - |
-
90 | - - -- - | -- - | - - - - -
-
- function _setCouncil(address __council) private {- - |
-
91 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _council = __council;- - |
-
92 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit SetCouncil(__council);- - |
-
93 | - - -- - | -- - | - - - - -
-
- }- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- /**- - |
-
96 | - - -- - | -- - | - - - - -
-
- * @notice Sets the address of the pending The Graph's Council- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @param __pendingCouncil The address of the pending The Graph's Council- - |
-
98 | - - -- - | -- - | - - - - -
-
- */- - |
-
99 | - - -- - | -- - | - - - - -
-
- function _setPendingCouncil(address __pendingCouncil) private {- - |
-
100 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _pendingCouncil = __pendingCouncil;- - |
-
101 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit SetPendingCouncil(__pendingCouncil);- - |
-
102 | - - -- - | -- - | - - - - -
-
- }- - |
-
103 | - - -- - | -- - | - - - - -
-
- }- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -3 / 27 (11.1%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {ValidatorLib} from '@defi-wonderland/prophet-core/solidity/libraries/ValidatorLib.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- import {IArbitrable, IArbitratorModule, ICouncilArbitrator, IOracle} from 'interfaces/ICouncilArbitrator.sol';- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- /**- - |
-
10 | - - -- - | -- - | - - - - -
-
- * @title CouncilArbitrator- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @notice Resolves disputes by arbitration by The Graph- - |
-
12 | - - -- - | -- - | - - - - -
-
- */- - |
-
13 | - - -- - | -- - | - - - - -
-
- contract CouncilArbitrator is ICouncilArbitrator {- - |
-
14 | - - -- - | -- - | - - - - -
-
- using ValidatorLib for IOracle.Dispute;- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc ICouncilArbitrator- - |
-
17 | - - -- - | -- - | - - - - -
-
- IOracle public immutable ORACLE;- - |
-
18 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc ICouncilArbitrator- - |
-
19 | - - -- - | -- - | - - - - -
-
- IArbitratorModule public immutable ARBITRATOR_MODULE;- - |
-
20 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc ICouncilArbitrator- - |
-
21 | - - -- - | -- - | - - - - -
-
- IArbitrable public immutable ARBITRABLE;- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc ICouncilArbitrator- - |
-
24 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => ResolutionParameters _resolutionParams) public resolutions;- - |
-
25 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrator- - |
-
26 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => IOracle.DisputeStatus _status) public getAnswer;- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- /**- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is the Arbitrator Module- - |
-
30 | - - -- - | -- - | - - - - -
-
- */- - |
-
31 | - - -- - | -- - | - - - - -
-
- modifier onlyArbitratorModule() {- - |
-
32 | - - -- - | -- - | - - - - -
-
- if (msg.sender != address(ARBITRATOR_MODULE)) revert CouncilArbitrator_OnlyArbitratorModule();- - |
-
33 | - - -- - | -- - | - - - - -
-
- _;- - |
-
34 | - - -- - | -- - | - - - - -
-
- }- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- /**- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @notice Constructor- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _arbitratorModule The address of the Arbitrator Module- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _arbitrable The address of the Arbitrable contract- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- constructor(IArbitratorModule _arbitratorModule, IArbitrable _arbitrable) {- - |
-
42 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ORACLE = _arbitratorModule.ORACLE();- - |
-
43 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRATOR_MODULE = _arbitratorModule;- - |
-
44 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRABLE = _arbitrable;- - |
-
45 | - - -- - | -- - | - - - - -
-
- }- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IArbitrator- - |
-
48 | - - -- - | -- - | - - - - -
-
- function resolve(- - |
-
49 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
50 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
51 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute- - |
-
52 | - - -- - | -- - | - - - - -
-
- ) external onlyArbitratorModule returns (bytes memory /* _data */ ) {- - |
-
53 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _dispute._getId();- - |
-
54 | - - -- - | -- - | - - - - -- - - - | -
55 | - - -- - | -- - | - - - - -
-
- resolutions[_disputeId] = ResolutionParameters(_request, _response, _dispute);- - |
-
56 | - - -- - | -- - | - - - - -- - - - | -
57 | - - -- - | -- - | - - - - -
-
- emit ResolutionStarted(_disputeId, _request, _response, _dispute);- - |
-
58 | - - -- - | -- - | - - - - -
-
- }- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc ICouncilArbitrator- - |
-
61 | - - -- - | -- - | - - - - -
-
- function arbitrateDispute(bytes32 _disputeId, IOracle.DisputeStatus _award) external {- - |
-
62 | - - -- - | -- - | - - - - -
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- ResolutionParameters memory _resolutionParams = resolutions[_disputeId];- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- if (_resolutionParams.dispute.disputer == address(0)) revert CouncilArbitrator_InvalidDispute();- - |
-
67 | - - -- - | -- - | - - - - -
-
- if (_award <= IOracle.DisputeStatus.Escalated) revert CouncilArbitrator_InvalidAward();- - |
-
68 | - - -- - | -- - | - - - - -
-
- if (getAnswer[_disputeId] != IOracle.DisputeStatus.None) revert CouncilArbitrator_DisputeAlreadyArbitrated();- - |
-
69 | - - -- - | -- - | - - - - -- - - - | -
70 | - - -- - | -- - | - - - - -
-
- getAnswer[_disputeId] = _award;- - |
-
71 | - - -- - | -- - | - - - - -- - - - | -
72 | - - -- - | -- - | - - - - -
-
- ORACLE.resolveDispute(_resolutionParams.request, _resolutionParams.response, _resolutionParams.dispute);- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- // If the request was not finalized, finalize it- - |
-
75 | - - -- - | -- - | - - - - -
-
- if (ORACLE.finalizedAt(_resolutionParams.dispute.requestId) == 0) {- - |
-
76 | - - -- - | -- - | - - - - -
-
- // If the dispute was lost, finalize with response- - |
-
77 | - - -- - | -- - | - - - - -
-
- if (_award != IOracle.DisputeStatus.Lost) {- - |
-
78 | - - -- - | -- - | - - - - -
-
- _resolutionParams.response.requestId = 0;- - |
-
79 | - - -- - | -- - | - - - - -
-
- }- - |
-
80 | - - -- - | -- - | - - - - -
-
- ORACLE.finalize(_resolutionParams.request, _resolutionParams.response);- - |
-
81 | - - -- - | -- - | - - - - -
-
- }- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- emit DisputeArbitrated(_disputeId, _award);- - |
-
84 | - - -- - | -- - | - - - - -
-
- }- - |
-
85 | - - -- - | -- - | - - - - -- - - - | -
86 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc ICouncilArbitrator- - |
-
87 | - - -- - | -- - | - - - - -
-
- function getResolution(bytes32 _disputeId) external view returns (ResolutionParameters memory _resolutionParams) {- - |
-
88 | - - -- - | -- - | - - - - -
-
- _resolutionParams = resolutions[_disputeId];- - |
-
89 | - - -- - | -- - | - - - - -
-
- }- - |
-
90 | - - -- - | -- - | - - - - -
-
- }- - |
-
91 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -8 / 28 (28.6%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- import {- - |
-
9 | - - -- - | -- - | - - - - -
-
- IArbitrable,- - |
-
10 | - - -- - | -- - | - - - - -
-
- IEBOFinalityModule,- - |
-
11 | - - -- - | -- - | - - - - -
-
- IEBORequestCreator,- - |
-
12 | - - -- - | -- - | - - - - -
-
- IEBORequestModule,- - |
-
13 | - - -- - | -- - | - - - - -
-
- IOracle- - |
-
14 | - - -- - | -- - | - - - - -
-
- } from 'interfaces/IEBOFinalityModule.sol';- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- /**- - |
-
17 | - - -- - | -- - | - - - - -
-
- * @title EBOFinalityModule- - |
-
18 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing users to index data into the subgraph- - |
-
19 | - - -- - | -- - | - - - - -
-
- * as a result of a request being finalized- - |
-
20 | - - -- - | -- - | - - - - -
-
- */- - |
-
21 | - - -- - | -- - | - - - - -
-
- contract EBOFinalityModule is Module, IEBOFinalityModule {- - |
-
22 | - - -- - | -- - | - - - - -
-
- using EnumerableSet for EnumerableSet.AddressSet;- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
25 | - - -- - | -- - | - - - - -
-
- IArbitrable public immutable ARBITRABLE;- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- /**- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @notice The set of EBORequestCreators allowed- - |
-
29 | - - -- - | -- - | - - - - -
-
- */- - |
-
30 | - - -- - | -- - | - - - - -
-
- EnumerableSet.AddressSet internal _eboRequestCreatorsAllowed;- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /**- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @notice Constructor- - |
-
34 | - - -- - | -- - | - - - - -
-
- * @param _oracle The address of the Oracle- - |
-
35 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
36 | - - -- - | -- - | - - - - -
-
- * @param _arbitrable The address of the Arbitrable contract- - |
-
37 | - - -- - | -- - | - - - - -
-
- */- - |
-
38 | - - -- - | -- - | - - - - -
-
- constructor(IOracle _oracle, IEBORequestCreator _eboRequestCreator, IArbitrable _arbitrable) Module(_oracle) {- - |
-
39 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _addEBORequestCreator(_eboRequestCreator);- - |
-
40 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRABLE = _arbitrable;- - |
-
41 | - - -- - | -- - | - - - - -
-
- }- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
44 | - - -- - | -- - | - - - - -
-
- function finalizeRequest(- - |
-
45 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
46 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
47 | - - -- - | -- - | - - - - -
-
- address _finalizer- - |
-
48 | - - -- - | -- - | - - - - -
-
- ) external override(Module, IEBOFinalityModule) onlyOracle {- - |
-
49 | - - -- - | -- - | - - - - -
-
- if (!_eboRequestCreatorsAllowed.contains(address(_request.requester))) revert EBOFinalityModule_InvalidRequester();- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- if (_response.requestId != 0) {- - |
-
52 | - - -- - | -- - | - - - - -
-
- IEBORequestModule.RequestParameters memory _requestParams = decodeRequestData(_request.requestModuleData);- - |
-
53 | - - -- - | -- - | - - - - -
-
- uint256 _block = decodeResponseData(_response.response);- - |
-
54 | - - -- - | -- - | - - - - -- - - - | -
55 | - - -- - | -- - | - - - - -
-
- emit NewEpoch(_requestParams.epoch, _requestParams.chainId, _block);- - |
-
56 | - - -- - | -- - | - - - - -
-
- }- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- emit RequestFinalized(_response.requestId, _response, _finalizer);- - |
-
59 | - - -- - | -- - | - - - - -
-
- }- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
62 | - - -- - | -- - | - - - - -
-
- function amendEpoch(uint256 _epoch, string[] calldata _chainIds, uint256[] calldata _blockNumbers) external {- - |
-
63 | - - -- - | -- - | - - - - -
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
64 | - - -- - | -- - | - - - - -- - - - | -
65 | - - -- - | -- - | - - - - -
-
- uint256 _length = _chainIds.length;- - |
-
66 | - - -- - | -- - | - - - - -
-
- if (_length != _blockNumbers.length) revert EBOFinalityModule_LengthMismatch();- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- for (uint256 _i; _i < _length; ++_i) {- - |
-
69 | - - -- - | -- - | - - - - -
-
- emit AmendEpoch(_epoch, _chainIds[_i], _blockNumbers[_i]);- - |
-
70 | - - -- - | -- - | - - - - -
-
- }- - |
-
71 | - - -- - | -- - | - - - - -
-
- }- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
74 | - - -- - | -- - | - - - - -
-
- function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {- - |
-
75 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
76 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _addEBORequestCreator(_eboRequestCreator);- - |
-
77 | - - -- - | -- - | - - - - -
-
- }- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
80 | - - -- - | -- - | - - - - -
-
- function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {- - |
-
81 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
82 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_eboRequestCreatorsAllowed.remove(address(_eboRequestCreator))) {- - |
-
83 | - - -- - | -- - | - - - - -
-
- emit RemoveEBORequestCreator(_eboRequestCreator);- - |
-
84 | - - -- - | -- - | - - - - -
-
- }- - |
-
85 | - - -- - | -- - | - - - - -
-
- }- - |
-
86 | - - -- - | -- - | - - - - -- - - - | -
87 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
88 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data)- - |
-
89 | - - -- - | -- - | - - - - -
-
- public- - |
-
90 | - - -- - | -- - | - - - - -
-
- pure- - |
-
91 | - - -- - | -- - | - - - - -
-
- returns (IEBORequestModule.RequestParameters memory _params)- - |
-
92 | - - -- - | -- - | - - - - -
-
- {- - |
-
93 | - - -- - | -- - | - - - - -
-
- _params = abi.decode(_data, (IEBORequestModule.RequestParameters));- - |
-
94 | - - -- - | -- - | - - - - -
-
- }- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
97 | - - -- - | -- - | - - - - -
-
- function decodeResponseData(bytes calldata _data) public pure returns (uint256 _block) {- - |
-
98 | - - -- - | -- - | - - - - -
-
- _block = abi.decode(_data, (uint256));- - |
-
99 | - - -- - | -- - | - - - - -
-
- }- - |
-
100 | - - -- - | -- - | - - - - -- - - - | -
101 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBOFinalityModule- - |
-
102 | - - -- - | -- - | - - - - -
-
- function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators) {- - |
-
103 | - - -- - | -- - | - - - - -
-
- _eboRequestCreators = _eboRequestCreatorsAllowed.values();- - |
-
104 | - - -- - | -- - | - - - - -
-
- }- - |
-
105 | - - -- - | -- - | - - - - -- - - - | -
106 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
107 | - - -- - | -- - | - - - - -
-
- function moduleName() external pure returns (string memory _moduleName) {- - |
-
108 | - - -- - | -- - | - - - - -
-
- _moduleName = 'EBOFinalityModule';- - |
-
109 | - - -- - | -- - | - - - - -
-
- }- - |
-
110 | - - -- - | -- - | - - - - -- - - - | -
111 | - - -- - | -- - | - - - - -
-
- /**- - |
-
112 | - - -- - | -- - | - - - - -
-
- * @notice Adds the address of the EBORequestCreator- - |
-
113 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
114 | - - -- - | -- - | - - - - -
-
- */- - |
-
115 | - - -- - | -- - | - - - - -
-
- function _addEBORequestCreator(IEBORequestCreator _eboRequestCreator) private {- - |
-
116 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_eboRequestCreatorsAllowed.add(address(_eboRequestCreator))) {- - |
-
117 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit AddEBORequestCreator(_eboRequestCreator);- - |
-
118 | - - -- - | -- - | - - - - -
-
- }- - |
-
119 | - - -- - | -- - | - - - - -
-
- }- - |
-
120 | - - -- - | -- - | - - - - -
-
- }- - |
-
121 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -49 / 67 (73.1%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {- - |
-
7 | - - -- - | -- - | - - - - -
-
- IArbitrable,- - |
-
8 | - - -- - | -- - | - - - - -
-
- IArbitratorModule,- - |
-
9 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule,- - |
-
10 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule,- - |
-
11 | - - -- - | -- - | - - - - -
-
- IEBORequestCreator,- - |
-
12 | - - -- - | -- - | - - - - -
-
- IEBORequestModule,- - |
-
13 | - - -- - | -- - | - - - - -
-
- IEpochManager,- - |
-
14 | - - -- - | -- - | - - - - -
-
- IOracle- - |
-
15 | - - -- - | -- - | - - - - -
-
- } from 'interfaces/IEBORequestCreator.sol';- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- contract EBORequestCreator is IEBORequestCreator {- - |
-
18 | - - -- - | -- - | - - - - -
-
- using EnumerableSet for EnumerableSet.Bytes32Set;- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
21 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- IOracle public immutable ORACLE;- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
24 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- IArbitrable public immutable ARBITRABLE;- - |
-
25 | - - -- - | -- - | - - - - -- - - - | -
26 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
27 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 public immutable START_EPOCH;- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
30 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- IEpochManager public epochManager;- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
33 | - - -- - | -- - | - - - - -
-
- IOracle.Request public requestData;- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
36 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- mapping(string _chainId => mapping(uint256 _epoch => bytes32 _requestId)) public requestIdPerChainAndEpoch;- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- /**- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @notice The set of chain ids allowed- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- EnumerableSet.Bytes32Set internal _chainIdsAllowed;- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- constructor(- - |
-
44 | - - -- - | -- - | - - - - -
-
- IOracle _oracle,- - |
-
45 | - - -- - | -- - | - - - - -
-
- IEpochManager _epochManager,- - |
-
46 | - - -- - | -- - | - - - - -
-
- IArbitrable _arbitrable,- - |
-
47 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory _requestData- - |
-
48 | - - -- - | -- - | - - - - -
-
- ) {- - |
-
49 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_requestData.nonce != 0) revert EBORequestCreator_InvalidNonce();- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRABLE = _arbitrable;- - |
-
52 | - - -- - | -- - | - - - - -- - - - | -
53 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ORACLE = _oracle;- - |
-
54 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setEpochManager(_epochManager);- - |
-
55 | - - -- - | -- - | - - - - -- - - - | -
56 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _requestData.requester = address(this);- - |
-
57 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData = _requestData;- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -
-
- √
-
- |
- - - | - - - - -
-
- START_EPOCH = epochManager.currentEpoch();- - |
-
60 | - - -- - | -- - | - - - - -
-
- }- - |
-
61 | - - -- - | -- - | - - - - -- - - - | -
62 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
63 | - - -- - | -- - | - - - - -
-
- function createRequest(uint256 _epoch, string calldata _chainId) external {- - |
-
64 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- if (_epoch > epochManager.currentEpoch() || START_EPOCH > _epoch) revert EBORequestCreator_InvalidEpoch();- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- bytes32 _encodedChainId = _encodeChainId(_chainId);- - |
-
67 | - - -- - | -- - | - - - - -
-
- if (!_chainIdsAllowed.contains(_encodedChainId)) revert EBORequestCreator_ChainNotAdded();- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory _requestData = requestData;- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- IEBORequestModule.RequestParameters memory _requestModuleData =- - |
-
72 | - - -- - | -- - | - - - - -
-
- IEBORequestModule(_requestData.requestModule).decodeRequestData(_requestData.requestModuleData);- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- _requestModuleData.epoch = _epoch;- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = requestIdPerChainAndEpoch[_chainId][_epoch];- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- if (- - |
-
79 | - - -- - | -- - | - - - - -
-
- _requestId != bytes32(0)- - |
-
80 | - - -- - | -- - | - - - - -
-
- && (ORACLE.finalizedAt(_requestId) == 0 || ORACLE.finalizedResponseId(_requestId) != bytes32(0))- - |
-
81 | - - -- - | -- - | - - - - -
-
- ) revert EBORequestCreator_RequestAlreadyCreated();- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- _requestModuleData.chainId = _chainId;- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- _requestData.requestModuleData = abi.encode(_requestModuleData);- - |
-
86 | - - -- - | -- - | - - - - -- - - - | -
87 | - - -- - | -- - | - - - - -
-
- _requestId = ORACLE.createRequest(_requestData, bytes32(0));- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- requestIdPerChainAndEpoch[_chainId][_epoch] = _requestId;- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- emit RequestCreated(_requestId, _requestData, _epoch, _chainId);- - |
-
92 | - - -- - | -- - | - - - - -
-
- }- - |
-
93 | - - -- - | -- - | - - - - -- - - - | -
94 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
95 | - - -- - | -- - | - - - - -
-
- function addChain(string calldata _chainId) external {- - |
-
96 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
97 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- bytes32 _encodedChainId = _encodeChainId(_chainId);- - |
-
98 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (!_chainIdsAllowed.add(_encodedChainId)) {- - |
-
99 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- revert EBORequestCreator_ChainAlreadyAdded();- - |
-
100 | - - -- - | -- - | - - - - -
-
- }- - |
-
101 | - - -- - | -- - | - - - - -- - - - | -
102 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit ChainAdded(_chainId);- - |
-
103 | - - -- - | -- - | - - - - -
-
- }- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
106 | - - -- - | -- - | - - - - -
-
- function removeChain(string calldata _chainId) external {- - |
-
107 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
108 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- bytes32 _encodedChainId = _encodeChainId(_chainId);- - |
-
109 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (!_chainIdsAllowed.remove(_encodedChainId)) {- - |
-
110 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- revert EBORequestCreator_ChainNotAdded();- - |
-
111 | - - -- - | -- - | - - - - -
-
- }- - |
-
112 | - - -- - | -- - | - - - - -- - - - | -
113 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit ChainRemoved(_chainId);- - |
-
114 | - - -- - | -- - | - - - - -
-
- }- - |
-
115 | - - -- - | -- - | - - - - -- - - - | -
116 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
117 | - - -- - | -- - | - - - - -
-
- function setRequestModuleData(- - |
-
118 | - - -- - | -- - | - - - - -
-
- address _requestModule,- - |
-
119 | - - -- - | -- - | - - - - -
-
- IEBORequestModule.RequestParameters calldata _requestModuleData- - |
-
120 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
121 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
122 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.requestModule = _requestModule;- - |
-
123 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.requestModuleData = abi.encode(_requestModuleData);- - |
-
124 | - - -- - | -- - | - - - - -- - - - | -
125 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit RequestModuleDataSet(_requestModule, _requestModuleData);- - |
-
126 | - - -- - | -- - | - - - - -
-
- }- - |
-
127 | - - -- - | -- - | - - - - -- - - - | -
128 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
129 | - - -- - | -- - | - - - - -
-
- function setResponseModuleData(- - |
-
130 | - - -- - | -- - | - - - - -
-
- address _responseModule,- - |
-
131 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule.RequestParameters calldata _responseModuleData- - |
-
132 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
133 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
134 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.responseModule = _responseModule;- - |
-
135 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.responseModuleData = abi.encode(_responseModuleData);- - |
-
136 | - - -- - | -- - | - - - - -- - - - | -
137 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit ResponseModuleDataSet(_responseModule, _responseModuleData);- - |
-
138 | - - -- - | -- - | - - - - -
-
- }- - |
-
139 | - - -- - | -- - | - - - - -- - - - | -
140 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
141 | - - -- - | -- - | - - - - -
-
- function setDisputeModuleData(- - |
-
142 | - - -- - | -- - | - - - - -
-
- address _disputeModule,- - |
-
143 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule.RequestParameters calldata _disputeModuleData- - |
-
144 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
145 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
146 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.disputeModule = _disputeModule;- - |
-
147 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.disputeModuleData = abi.encode(_disputeModuleData);- - |
-
148 | - - -- - | -- - | - - - - -- - - - | -
149 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit DisputeModuleDataSet(_disputeModule, _disputeModuleData);- - |
-
150 | - - -- - | -- - | - - - - -
-
- }- - |
-
151 | - - -- - | -- - | - - - - -- - - - | -
152 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
153 | - - -- - | -- - | - - - - -
-
- function setResolutionModuleData(- - |
-
154 | - - -- - | -- - | - - - - -
-
- address _resolutionModule,- - |
-
155 | - - -- - | -- - | - - - - -
-
- IArbitratorModule.RequestParameters calldata _resolutionModuleData- - |
-
156 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
157 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
158 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.resolutionModule = _resolutionModule;- - |
-
159 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.resolutionModuleData = abi.encode(_resolutionModuleData);- - |
-
160 | - - -- - | -- - | - - - - -- - - - | -
161 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit ResolutionModuleDataSet(_resolutionModule, _resolutionModuleData);- - |
-
162 | - - -- - | -- - | - - - - -
-
- }- - |
-
163 | - - -- - | -- - | - - - - -- - - - | -
164 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
165 | - - -- - | -- - | - - - - -
-
- function setFinalityModuleData(address _finalityModule) external {- - |
-
166 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
167 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestData.finalityModule = _finalityModule;- - |
-
168 | - - -- - | -- - | - - - - -- - - - | -
169 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit FinalityModuleDataSet(_finalityModule, new bytes(0));- - |
-
170 | - - -- - | -- - | - - - - -
-
- }- - |
-
171 | - - -- - | -- - | - - - - -- - - - | -
172 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
173 | - - -- - | -- - | - - - - -
-
- function setEpochManager(IEpochManager _epochManager) external {- - |
-
174 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
175 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setEpochManager(_epochManager);- - |
-
176 | - - -- - | -- - | - - - - -
-
- }- - |
-
177 | - - -- - | -- - | - - - - -- - - - | -
178 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
179 | - - -- - | -- - | - - - - -
-
- function getRequestData() external view returns (IOracle.Request memory _requestData) {- - |
-
180 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- _requestData = requestData;- - |
-
181 | - - -- - | -- - | - - - - -
-
- }- - |
-
182 | - - -- - | -- - | - - - - -- - - - | -
183 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestCreator- - |
-
184 | - - -- - | -- - | - - - - -
-
- function getAllowedChainIds() external view returns (bytes32[] memory _chainIds) {- - |
-
185 | - - -- - | -- - | - - - - -
-
- _chainIds = _chainIdsAllowed.values();- - |
-
186 | - - -- - | -- - | - - - - -
-
- }- - |
-
187 | - - -- - | -- - | - - - - -- - - - | -
188 | - - -- - | -- - | - - - - -
-
- /**- - |
-
189 | - - -- - | -- - | - - - - -
-
- * @notice Set the epoch manager- - |
-
190 | - - -- - | -- - | - - - - -
-
- * @param _epochManager The epoch manager- - |
-
191 | - - -- - | -- - | - - - - -
-
- */- - |
-
192 | - - -- - | -- - | - - - - -
-
- function _setEpochManager(IEpochManager _epochManager) internal {- - |
-
193 | - - -
-
- √
-
- |
- - - | - - - - -
-
- epochManager = _epochManager;- - |
-
194 | - - -- - | -- - | - - - - -- - - - | -
195 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit EpochManagerSet(_epochManager);- - |
-
196 | - - -- - | -- - | - - - - -
-
- }- - |
-
197 | - - -- - | -- - | - - - - -- - - - | -
198 | - - -- - | -- - | - - - - -
-
- /**- - |
-
199 | - - -- - | -- - | - - - - -
-
- * @notice Encodes the chain id- - |
-
200 | - - -- - | -- - | - - - - -
-
- * @dev The chain id is hashed to have a enumerable set to avoid duplicates- - |
-
201 | - - -- - | -- - | - - - - -
-
- */- - |
-
202 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function _encodeChainId(string calldata _chainId) internal pure returns (bytes32 _encodedChainId) {- - |
-
203 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- _encodedChainId = keccak256(abi.encodePacked(_chainId));- - |
-
204 | - - -- - | -- - | - - - - -
-
- }- - |
-
205 | - - -- - | -- - | - - - - -
-
- }- - |
-
206 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -9 / 19 (47.4%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IModule, Module} from '@defi-wonderland/prophet-core/solidity/contracts/Module.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- import {IArbitrable, IEBORequestCreator, IEBORequestModule, IOracle} from 'interfaces/IEBORequestModule.sol';- - |
-
9 | - - -- - | -- - | - - - - -- - - - | -
10 | - - -- - | -- - | - - - - -
-
- /**- - |
-
11 | - - -- - | -- - | - - - - -
-
- * @title EBORequestModule- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing users to create a request for RPC data for a specific epoch- - |
-
13 | - - -- - | -- - | - - - - -
-
- */- - |
-
14 | - - -- - | -- - | - - - - -
-
- contract EBORequestModule is Module, IEBORequestModule {- - |
-
15 | - - -- - | -- - | - - - - -
-
- using EnumerableSet for EnumerableSet.AddressSet;- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestModule- - |
-
18 | - - -- - | -- - | - - - - -
-
- IArbitrable public immutable ARBITRABLE;- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- /**- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @notice The set of EBORequestCreators allowed- - |
-
22 | - - -- - | -- - | - - - - -
-
- */- - |
-
23 | - - -- - | -- - | - - - - -
-
- EnumerableSet.AddressSet internal _eboRequestCreatorsAllowed;- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- /**- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @notice Constructor- - |
-
27 | - - -- - | -- - | - - - - -
-
- * @param _oracle The address of the Oracle- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @param _arbitrable The address of the Arbitrable contract- - |
-
30 | - - -- - | -- - | - - - - -
-
- */- - |
-
31 | - - -- - | -- - | - - - - -
-
- constructor(IOracle _oracle, IEBORequestCreator _eboRequestCreator, IArbitrable _arbitrable) Module(_oracle) {- - |
-
32 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _addEBORequestCreator(_eboRequestCreator);- - |
-
33 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRABLE = _arbitrable;- - |
-
34 | - - -- - | -- - | - - - - -
-
- }- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestModule- - |
-
37 | - - -- - | -- - | - - - - -
-
- function createRequest(- - |
-
38 | - - -- - | -- - | - - - - -
-
- bytes32, /* _requestId */- - |
-
39 | - - -- - | -- - | - - - - -
-
- bytes calldata, /* _data */- - |
-
40 | - - -- - | -- - | - - - - -
-
- address _requester- - |
-
41 | - - -- - | -- - | - - - - -
-
- ) external view onlyOracle {- - |
-
42 | - - -- - | -- - | - - - - -
-
- if (!_eboRequestCreatorsAllowed.contains(_requester)) revert EBORequestModule_InvalidRequester();- - |
-
43 | - - -- - | -- - | - - - - -
-
- }- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestModule- - |
-
46 | - - -- - | -- - | - - - - -
-
- function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {- - |
-
47 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
48 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _addEBORequestCreator(_eboRequestCreator);- - |
-
49 | - - -- - | -- - | - - - - -
-
- }- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestModule- - |
-
52 | - - -- - | -- - | - - - - -
-
- function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external {- - |
-
53 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
54 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_eboRequestCreatorsAllowed.remove(address(_eboRequestCreator))) {- - |
-
55 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit RemoveEBORequestCreator(_eboRequestCreator);- - |
-
56 | - - -- - | -- - | - - - - -
-
- }- - |
-
57 | - - -- - | -- - | - - - - -
-
- }- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestModule- - |
-
60 | - - -- - | -- - | - - - - -
-
- function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators) {- - |
-
61 | - - -- - | -- - | - - - - -
-
- _eboRequestCreators = _eboRequestCreatorsAllowed.values();- - |
-
62 | - - -- - | -- - | - - - - -
-
- }- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IEBORequestModule- - |
-
65 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) public pure returns (RequestParameters memory _params) {- - |
-
66 | - - -- - | -- - | - - - - -
-
- _params = abi.decode(_data, (RequestParameters));- - |
-
67 | - - -- - | -- - | - - - - -
-
- }- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
70 | - - -- - | -- - | - - - - -
-
- function validateParameters(bytes calldata _encodedParameters)- - |
-
71 | - - -- - | -- - | - - - - -
-
- external- - |
-
72 | - - -- - | -- - | - - - - -
-
- pure- - |
-
73 | - - -- - | -- - | - - - - -
-
- override(IModule, Module)- - |
-
74 | - - -- - | -- - | - - - - -
-
- returns (bool _valid)- - |
-
75 | - - -- - | -- - | - - - - -
-
- {- - |
-
76 | - - -- - | -- - | - - - - -
-
- RequestParameters memory _params = decodeRequestData(_encodedParameters);- - |
-
77 | - - -- - | -- - | - - - - -
-
- _valid =- - |
-
78 | - - -- - | -- - | - - - - -
-
- _params.epoch != 0 && bytes(_params.chainId).length != 0 && address(_params.accountingExtension) != address(0);- - |
-
79 | - - -- - | -- - | - - - - -
-
- }- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IModule- - |
-
82 | - - -- - | -- - | - - - - -
-
- function moduleName() external pure returns (string memory _moduleName) {- - |
-
83 | - - -- - | -- - | - - - - -
-
- _moduleName = 'EBORequestModule';- - |
-
84 | - - -- - | -- - | - - - - -
-
- }- - |
-
85 | - - -- - | -- - | - - - - -- - - - | -
86 | - - -- - | -- - | - - - - -
-
- /**- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @notice Adds the address of the EBORequestCreator- - |
-
88 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
89 | - - -- - | -- - | - - - - -
-
- */- - |
-
90 | - - -- - | -- - | - - - - -
-
- function _addEBORequestCreator(IEBORequestCreator _eboRequestCreator) private {- - |
-
91 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_eboRequestCreatorsAllowed.add(address(_eboRequestCreator))) {- - |
-
92 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit AddEBORequestCreator(_eboRequestCreator);- - |
-
93 | - - -- - | -- - | - - - - -
-
- }- - |
-
94 | - - -- - | -- - | - - - - -
-
- }- - |
-
95 | - - -- - | -- - | - - - - -
-
- }- - |
-
96 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -13 / 141 (9.2%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {SafeERC20} from '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {EnumerableSet} from '@openzeppelin/contracts/utils/structs/EnumerableSet.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- import {- - |
-
8 | - - -- - | -- - | - - - - -
-
- IArbitrable,- - |
-
9 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule,- - |
-
10 | - - -- - | -- - | - - - - -
-
- IERC20,- - |
-
11 | - - -- - | -- - | - - - - -
-
- IHorizonAccountingExtension,- - |
-
12 | - - -- - | -- - | - - - - -
-
- IHorizonStaking,- - |
-
13 | - - -- - | -- - | - - - - -
-
- IOracle- - |
-
14 | - - -- - | -- - | - - - - -
-
- } from 'interfaces/IHorizonAccountingExtension.sol';- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- import {Validator} from '@defi-wonderland/prophet-core/solidity/contracts/Validator.sol';- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
18 | - - -- - | -- - | - - - - -
-
- contract HorizonAccountingExtension is Validator, IHorizonAccountingExtension {- - |
-
19 | - - -- - | -- - | - - - - -
-
- using EnumerableSet for EnumerableSet.AddressSet;- - |
-
20 | - - -- - | -- - | - - - - -
-
- using SafeERC20 for IERC20;- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
23 | - - -- - | -- - | - - - - -
-
- IHorizonStaking public immutable HORIZON_STAKING;- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
26 | - - -- - | -- - | - - - - -
-
- IERC20 public immutable GRT;- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
29 | - - -- - | -- - | - - - - -
-
- IArbitrable public immutable ARBITRABLE;- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
32 | - - -- - | -- - | - - - - -
-
- uint64 public immutable MIN_THAWING_PERIOD;- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
35 | - - -- - | -- - | - - - - -
-
- uint32 public constant MAX_USERS_TO_SLASH = 1;- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
38 | - - -- - | -- - | - - - - -
-
- uint32 public constant MAX_VERIFIER_CUT = 1_000_000;- - |
-
39 | - - -- - | -- - | - - - - -- - - - | -
40 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
41 | - - -- - | -- - | - - - - -
-
- uint128 public maxUsersToCheck;- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
44 | - - -- - | -- - | - - - - -
-
- mapping(address _user => uint256 _bonded) public totalBonded;- - |
-
45 | - - -- - | -- - | - - - - -- - - - | -
46 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
47 | - - -- - | -- - | - - - - -
-
- mapping(address _bonder => mapping(bytes32 _requestId => uint256 _amount)) public bondedForRequest;- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
50 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => uint256 _amount) public pledges;- - |
-
51 | - - -- - | -- - | - - - - -- - - - | -
52 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
53 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => EscalationResult _result) public escalationResults;- - |
-
54 | - - -- - | -- - | - - - - -- - - - | -
55 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
56 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _requestId => mapping(address _pledger => bool _claimed)) public pledgerClaimed;- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
59 | - - -- - | -- - | - - - - -
-
- mapping(address _caller => bool _authorized) public authorizedCallers;- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
62 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => uint256 _balance) public disputeBalance;- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- /**- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @notice Storing which modules have the users approved to bond their tokens.- - |
-
66 | - - -- - | -- - | - - - - -
-
- */- - |
-
67 | - - -- - | -- - | - - - - -
-
- mapping(address _bonder => EnumerableSet.AddressSet _modules) internal _approvals;- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- /**- - |
-
70 | - - -- - | -- - | - - - - -
-
- * @notice Storing the users that have pledged for a dispute.- - |
-
71 | - - -- - | -- - | - - - - -
-
- */- - |
-
72 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 _disputeId => EnumerableSet.AddressSet _pledger) internal _pledgers;- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- /**- - |
-
75 | - - -- - | -- - | - - - - -
-
- * @notice Constructor- - |
-
76 | - - -- - | -- - | - - - - -
-
- * @param _horizonStaking The address of the Oracle- - |
-
77 | - - -- - | -- - | - - - - -
-
- * @param _oracle The address of the Oracle- - |
-
78 | - - -- - | -- - | - - - - -
-
- * @param _grt The address of the GRT token- - |
-
79 | - - -- - | -- - | - - - - -
-
- * @param _minThawingPeriod The minimum thawing period for the staking- - |
-
80 | - - -- - | -- - | - - - - -
-
- * @param _maxUsersToCheck The maximum number of users to check- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @param _authorizedCallers The addresses of the authorized callers- - |
-
82 | - - -- - | -- - | - - - - -
-
- */- - |
-
83 | - - -- - | -- - | - - - - -
-
- constructor(- - |
-
84 | - - -- - | -- - | - - - - -
-
- IHorizonStaking _horizonStaking,- - |
-
85 | - - -- - | -- - | - - - - -
-
- IOracle _oracle,- - |
-
86 | - - -- - | -- - | - - - - -
-
- IERC20 _grt,- - |
-
87 | - - -- - | -- - | - - - - -
-
- IArbitrable _arbitrable,- - |
-
88 | - - -- - | -- - | - - - - -
-
- uint64 _minThawingPeriod,- - |
-
89 | - - -- - | -- - | - - - - -
-
- uint128 _maxUsersToCheck,- - |
-
90 | - - -- - | -- - | - - - - -
-
- address[] memory _authorizedCallers- - |
-
91 | - - -- - | -- - | - - - - -
-
- ) Validator(_oracle) {- - |
-
92 | - - -
-
- √
-
- |
- - - | - - - - -
-
- HORIZON_STAKING = _horizonStaking;- - |
-
93 | - - -
-
- √
-
- |
- - - | - - - - -
-
- GRT = _grt;- - |
-
94 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ARBITRABLE = _arbitrable;- - |
-
95 | - - -
-
- √
-
- |
- - - | - - - - -
-
- MIN_THAWING_PERIOD = _minThawingPeriod;- - |
-
96 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setMaxUsersToCheck(_maxUsersToCheck);- - |
-
97 | - - -- - | -- - | - - - - -- - - - | -
98 | - - -- - | -- - | - - - - -
-
- // Set the authorized callers- - |
-
99 | - - -
-
- √
-
- |
- - - | - - - - -
-
- for (uint256 _i; _i < _authorizedCallers.length; ++_i) {- - |
-
100 | - - -
-
- √
-
- |
- - - | - - - - -
-
- authorizedCallers[_authorizedCallers[_i]] = true;- - |
-
101 | - - -- - | -- - | - - - - -
-
- }- - |
-
102 | - - -- - | -- - | - - - - -
-
- }- - |
-
103 | - - -- - | -- - | - - - - -- - - - | -
104 | - - -- - | -- - | - - - - -
-
- /**- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is an authorized caller.- - |
-
106 | - - -- - | -- - | - - - - -
-
- */- - |
-
107 | - - -- - | -- - | - - - - -
-
- modifier onlyAuthorizedCaller() {- - |
-
108 | - - -- - | -- - | - - - - -
-
- if (!authorizedCallers[msg.sender]) revert HorizonAccountingExtension_UnauthorizedCaller();- - |
-
109 | - - -- - | -- - | - - - - -
-
- _;- - |
-
110 | - - -- - | -- - | - - - - -
-
- }- - |
-
111 | - - -- - | -- - | - - - - -- - - - | -
112 | - - -- - | -- - | - - - - -
-
- /**- - |
-
113 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is an allowed module used in the request.- - |
-
114 | - - -- - | -- - | - - - - -
-
- * @param _requestId The request ID.- - |
-
115 | - - -- - | -- - | - - - - -
-
- */- - |
-
116 | - - -- - | -- - | - - - - -
-
- modifier onlyAllowedModule(bytes32 _requestId) {- - |
-
117 | - - -- - | -- - | - - - - -
-
- if (!ORACLE.allowedModule(_requestId, msg.sender)) revert HorizonAccountingExtension_UnauthorizedModule();- - |
-
118 | - - -- - | -- - | - - - - -
-
- _;- - |
-
119 | - - -- - | -- - | - - - - -
-
- }- - |
-
120 | - - -- - | -- - | - - - - -- - - - | -
121 | - - -- - | -- - | - - - - -
-
- /**- - |
-
122 | - - -- - | -- - | - - - - -
-
- * @notice Checks if the user is either the requester or a proposer, or a disputer.- - |
-
123 | - - -- - | -- - | - - - - -
-
- * @param _requestId The request ID.- - |
-
124 | - - -- - | -- - | - - - - -
-
- * @param _user The address to check.- - |
-
125 | - - -- - | -- - | - - - - -
-
- */- - |
-
126 | - - -- - | -- - | - - - - -
-
- modifier onlyParticipant(bytes32 _requestId, address _user) {- - |
-
127 | - - -- - | -- - | - - - - -
-
- if (!ORACLE.isParticipant(_requestId, _user)) revert HorizonAccountingExtension_UnauthorizedUser();- - |
-
128 | - - -- - | -- - | - - - - -
-
- _;- - |
-
129 | - - -- - | -- - | - - - - -
-
- }- - |
-
130 | - - -- - | -- - | - - - - -- - - - | -
131 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
132 | - - -- - | -- - | - - - - -
-
- function approveModule(address _module) external {- - |
-
133 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _approvals[msg.sender].add(_module);- - |
-
134 | - - -- - | -- - | - - - - -
-
- }- - |
-
135 | - - -- - | -- - | - - - - -- - - - | -
136 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
137 | - - -- - | -- - | - - - - -
-
- function revokeModule(address _module) external {- - |
-
138 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _approvals[msg.sender].remove(_module);- - |
-
139 | - - -- - | -- - | - - - - -
-
- }- - |
-
140 | - - -- - | -- - | - - - - -- - - - | -
141 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
142 | - - -- - | -- - | - - - - -
-
- function pledge(- - |
-
143 | - - -- - | -- - | - - - - -
-
- address _pledger,- - |
-
144 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
145 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
146 | - - -- - | -- - | - - - - -
-
- IERC20, /* _token */- - |
-
147 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
148 | - - -- - | -- - | - - - - -
-
- ) external onlyAuthorizedCaller {- - |
-
149 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _getId(_request);- - |
-
150 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _validateDispute(_request, _dispute);- - |
-
151 | - - -- - | -- - | - - - - -- - - - | -
152 | - - -- - | -- - | - - - - -
-
- if (!ORACLE.allowedModule(_requestId, msg.sender)) revert HorizonAccountingExtension_UnauthorizedModule();- - |
-
153 | - - -- - | -- - | - - - - -- - - - | -
154 | - - -- - | -- - | - - - - -
-
- pledges[_disputeId] += _amount;- - |
-
155 | - - -- - | -- - | - - - - -- - - - | -
156 | - - -- - | -- - | - - - - -
-
- _pledgers[_disputeId].add(_pledger);- - |
-
157 | - - -- - | -- - | - - - - -- - - - | -
158 | - - -- - | -- - | - - - - -
-
- _bond(_pledger, _amount);- - |
-
159 | - - -- - | -- - | - - - - -- - - - | -
160 | - - -- - | -- - | - - - - -
-
- emit Pledged({_pledger: _pledger, _requestId: _requestId, _disputeId: _disputeId, _amount: _amount});- - |
-
161 | - - -- - | -- - | - - - - -
-
- }- - |
-
162 | - - -- - | -- - | - - - - -- - - - | -
163 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
164 | - - -- - | -- - | - - - - -
-
- function onSettleBondEscalation(- - |
-
165 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
166 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
167 | - - -- - | -- - | - - - - -
-
- IERC20, /* _token */- - |
-
168 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger,- - |
-
169 | - - -- - | -- - | - - - - -
-
- uint256 _winningPledgersLength- - |
-
170 | - - -- - | -- - | - - - - -
-
- ) external onlyAuthorizedCaller {- - |
-
171 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _getId(_request);- - |
-
172 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId = _validateDispute(_request, _dispute);- - |
-
173 | - - -- - | -- - | - - - - -- - - - | -
174 | - - -- - | -- - | - - - - -
-
- if (!ORACLE.allowedModule(_requestId, msg.sender)) revert HorizonAccountingExtension_UnauthorizedModule();- - |
-
175 | - - -- - | -- - | - - - - -- - - - | -
176 | - - -- - | -- - | - - - - -
-
- if (_amountPerPledger * _winningPledgersLength > pledges[_disputeId]) {- - |
-
177 | - - -- - | -- - | - - - - -
-
- revert HorizonAccountingExtension_InsufficientFunds();- - |
-
178 | - - -- - | -- - | - - - - -
-
- }- - |
-
179 | - - -- - | -- - | - - - - -- - - - | -
180 | - - -- - | -- - | - - - - -
-
- if (escalationResults[_disputeId].requestId != bytes32(0)) {- - |
-
181 | - - -- - | -- - | - - - - -
-
- revert HorizonAccountingExtension_AlreadySettled();- - |
-
182 | - - -- - | -- - | - - - - -
-
- }- - |
-
183 | - - -- - | -- - | - - - - -- - - - | -
184 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule _bondEscalationModule = IBondEscalationModule(msg.sender);- - |
-
185 | - - -- - | -- - | - - - - -- - - - | -
186 | - - -- - | -- - | - - - - -
-
- escalationResults[_disputeId] = EscalationResult({- - |
-
187 | - - -- - | -- - | - - - - -
-
- requestId: _requestId,- - |
-
188 | - - -- - | -- - | - - - - -
-
- amountPerPledger: _amountPerPledger,- - |
-
189 | - - -- - | -- - | - - - - -
-
- bondSize: _bondEscalationModule.decodeRequestData(_request.disputeModuleData).bondSize,- - |
-
190 | - - -- - | -- - | - - - - -
-
- bondEscalationModule: _bondEscalationModule- - |
-
191 | - - -- - | -- - | - - - - -
-
- });- - |
-
192 | - - -- - | -- - | - - - - -- - - - | -
193 | - - -- - | -- - | - - - - -
-
- emit BondEscalationSettled({- - |
-
194 | - - -- - | -- - | - - - - -
-
- _requestId: _requestId,- - |
-
195 | - - -- - | -- - | - - - - -
-
- _disputeId: _disputeId,- - |
-
196 | - - -- - | -- - | - - - - -
-
- _amountPerPledger: _amountPerPledger,- - |
-
197 | - - -- - | -- - | - - - - -
-
- _winningPledgersLength: _winningPledgersLength- - |
-
198 | - - -- - | -- - | - - - - -
-
- });- - |
-
199 | - - -- - | -- - | - - - - -
-
- }- - |
-
200 | - - -- - | -- - | - - - - -- - - - | -
201 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
202 | - - -- - | -- - | - - - - -
-
- function claimEscalationReward(bytes32 _disputeId, address _pledger) external {- - |
-
203 | - - -- - | -- - | - - - - -
-
- EscalationResult memory _result = escalationResults[_disputeId];- - |
-
204 | - - -- - | -- - | - - - - -
-
- if (_result.requestId == bytes32(0)) revert HorizonAccountingExtension_NoEscalationResult();- - |
-
205 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _result.requestId;- - |
-
206 | - - -- - | -- - | - - - - -
-
- if (pledgerClaimed[_requestId][_pledger]) revert HorizonAccountingExtension_AlreadyClaimed();- - |
-
207 | - - -- - | -- - | - - - - -- - - - | -
208 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _status = ORACLE.disputeStatus(_disputeId);- - |
-
209 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger = _result.amountPerPledger;- - |
-
210 | - - -- - | -- - | - - - - -
-
- uint256 _numberOfPledges;- - |
-
211 | - - -- - | -- - | - - - - -
-
- uint256 _pledgeAmount;- - |
-
212 | - - -- - | -- - | - - - - -
-
- uint256 _claimAmount;- - |
-
213 | - - -- - | -- - | - - - - -
-
- uint256 _rewardAmount;- - |
-
214 | - - -- - | -- - | - - - - -- - - - | -
215 | - - -- - | -- - | - - - - -
-
- if (_status == IOracle.DisputeStatus.NoResolution) {- - |
-
216 | - - -- - | -- - | - - - - -
-
- _numberOfPledges = _result.bondEscalationModule.pledgesForDispute(_requestId, _pledger)- - |
-
217 | - - -- - | -- - | - - - - -
-
- + _result.bondEscalationModule.pledgesAgainstDispute(_requestId, _pledger);- - |
-
218 | - - -- - | -- - | - - - - -- - - - | -
219 | - - -- - | -- - | - - - - -
-
- // If no resolution, pledge amount and claim amount are the same- - |
-
220 | - - -- - | -- - | - - - - -
-
- _pledgeAmount = _result.bondSize * _numberOfPledges;- - |
-
221 | - - -- - | -- - | - - - - -
-
- _claimAmount = _amountPerPledger * _numberOfPledges;- - |
-
222 | - - -- - | -- - | - - - - -
-
- } else {- - |
-
223 | - - -- - | -- - | - - - - -
-
- _numberOfPledges = _status == IOracle.DisputeStatus.Won- - |
-
224 | - - -- - | -- - | - - - - -
-
- ? _result.bondEscalationModule.pledgesForDispute(_requestId, _pledger)- - |
-
225 | - - -- - | -- - | - - - - -
-
- : _result.bondEscalationModule.pledgesAgainstDispute(_requestId, _pledger);- - |
-
226 | - - -- - | -- - | - - - - -- - - - | -
227 | - - -- - | -- - | - - - - -
-
- _pledgeAmount = _result.bondSize * _numberOfPledges;- - |
-
228 | - - -- - | -- - | - - - - -
-
- _claimAmount = _amountPerPledger * _numberOfPledges;- - |
-
229 | - - -- - | -- - | - - - - -
-
- _rewardAmount = _claimAmount - _pledgeAmount;- - |
-
230 | - - -- - | -- - | - - - - -- - - - | -
231 | - - -- - | -- - | - - - - -
-
- _rewardAmount = _claimAmount - _pledgeAmount;- - |
-
232 | - - -- - | -- - | - - - - -- - - - | -
233 | - - -- - | -- - | - - - - -
-
- // Check the balance in the contract- - |
-
234 | - - -- - | -- - | - - - - -
-
- // If not enough balance, slash some users to get enough balance- - |
-
235 | - - -- - | -- - | - - - - -
-
- // TODO: How many iterations should we do?- - |
-
236 | - - -- - | -- - | - - - - -
-
- while (disputeBalance[_disputeId] < _rewardAmount) {- - |
-
237 | - - -- - | -- - | - - - - -
-
- _slash(_disputeId, MAX_USERS_TO_SLASH, maxUsersToCheck, _result, _status);- - |
-
238 | - - -- - | -- - | - - - - -
-
- }- - |
-
239 | - - -- - | -- - | - - - - -- - - - | -
240 | - - -- - | -- - | - - - - -
-
- unchecked {- - |
-
241 | - - -- - | -- - | - - - - -
-
- disputeBalance[_disputeId] -= _rewardAmount;- - |
-
242 | - - -- - | -- - | - - - - -
-
- }- - |
-
243 | - - -- - | -- - | - - - - -
-
- // Send the user the amount they won by participating in the dispute- - |
-
244 | - - -- - | -- - | - - - - -
-
- GRT.safeTransfer(_pledger, _rewardAmount);- - |
-
245 | - - -- - | -- - | - - - - -
-
- }- - |
-
246 | - - -- - | -- - | - - - - -- - - - | -
247 | - - -- - | -- - | - - - - -
-
- // Release the winning pledges to the user- - |
-
248 | - - -- - | -- - | - - - - -
-
- _unbond(_pledger, _pledgeAmount);- - |
-
249 | - - -- - | -- - | - - - - -- - - - | -
250 | - - -- - | -- - | - - - - -
-
- pledgerClaimed[_requestId][_pledger] = true;- - |
-
251 | - - -- - | -- - | - - - - -- - - - | -
252 | - - -- - | -- - | - - - - -
-
- pledges[_disputeId] -= _claimAmount;- - |
-
253 | - - -- - | -- - | - - - - -- - - - | -
254 | - - -- - | -- - | - - - - -
-
- if (pledges[_disputeId] == 0) {- - |
-
255 | - - -- - | -- - | - - - - -
-
- delete _pledgers[_disputeId];- - |
-
256 | - - -- - | -- - | - - - - -
-
- }- - |
-
257 | - - -- - | -- - | - - - - -- - - - | -
258 | - - -- - | -- - | - - - - -
-
- emit EscalationRewardClaimed({- - |
-
259 | - - -- - | -- - | - - - - -
-
- _requestId: _requestId,- - |
-
260 | - - -- - | -- - | - - - - -
-
- _disputeId: _disputeId,- - |
-
261 | - - -- - | -- - | - - - - -
-
- _pledger: _pledger,- - |
-
262 | - - -- - | -- - | - - - - -
-
- _reward: _rewardAmount,- - |
-
263 | - - -- - | -- - | - - - - -
-
- _released: _pledgeAmount- - |
-
264 | - - -- - | -- - | - - - - -
-
- });- - |
-
265 | - - -- - | -- - | - - - - -
-
- }- - |
-
266 | - - -- - | -- - | - - - - -- - - - | -
267 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
268 | - - -- - | -- - | - - - - -
-
- function pay(- - |
-
269 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId,- - |
-
270 | - - -- - | -- - | - - - - -
-
- address _payer,- - |
-
271 | - - -- - | -- - | - - - - -
-
- address _receiver,- - |
-
272 | - - -- - | -- - | - - - - -
-
- IERC20, /* _token */- - |
-
273 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
274 | - - -- - | -- - | - - - - -
-
- ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _payer) onlyParticipant(_requestId, _receiver) {- - |
-
275 | - - -- - | -- - | - - - - -
-
- // Discount the payer bondedForRequest- - |
-
276 | - - -- - | -- - | - - - - -
-
- bondedForRequest[_payer][_requestId] -= _amount;- - |
-
277 | - - -- - | -- - | - - - - -- - - - | -
278 | - - -- - | -- - | - - - - -
-
- // Discout the payer totalBonded- - |
-
279 | - - -- - | -- - | - - - - -
-
- _unbond(_payer, _amount);- - |
-
280 | - - -- - | -- - | - - - - -- - - - | -
281 | - - -- - | -- - | - - - - -
-
- // Slash a payer to pay the receiver- - |
-
282 | - - -- - | -- - | - - - - -
-
- HORIZON_STAKING.slash(_payer, _amount, _amount, _receiver);- - |
-
283 | - - -- - | -- - | - - - - -- - - - | -
284 | - - -- - | -- - | - - - - -
-
- emit Paid({_requestId: _requestId, _beneficiary: _receiver, _payer: _payer, _amount: _amount});- - |
-
285 | - - -- - | -- - | - - - - -
-
- }- - |
-
286 | - - -- - | -- - | - - - - -- - - - | -
287 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
288 | - - -- - | -- - | - - - - -
-
- function bond(- - |
-
289 | - - -- - | -- - | - - - - -
-
- address _bonder,- - |
-
290 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId,- - |
-
291 | - - -- - | -- - | - - - - -
-
- IERC20, /* _token */- - |
-
292 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
293 | - - -- - | -- - | - - - - -
-
- ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _bonder) {- - |
-
294 | - - -- - | -- - | - - - - -
-
- if (!_approvals[_bonder].contains(msg.sender)) revert HorizonAccountingExtension_NotAllowed();- - |
-
295 | - - -- - | -- - | - - - - -- - - - | -
296 | - - -- - | -- - | - - - - -
-
- bondedForRequest[_bonder][_requestId] += _amount;- - |
-
297 | - - -- - | -- - | - - - - -- - - - | -
298 | - - -- - | -- - | - - - - -
-
- _bond(_bonder, _amount);- - |
-
299 | - - -- - | -- - | - - - - -- - - - | -
300 | - - -- - | -- - | - - - - -
-
- emit Bonded(_requestId, _bonder, _amount);- - |
-
301 | - - -- - | -- - | - - - - -
-
- }- - |
-
302 | - - -- - | -- - | - - - - -- - - - | -
303 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
304 | - - -- - | -- - | - - - - -
-
- function bond(- - |
-
305 | - - -- - | -- - | - - - - -
-
- address _bonder,- - |
-
306 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId,- - |
-
307 | - - -- - | -- - | - - - - -
-
- IERC20, /* _token */- - |
-
308 | - - -- - | -- - | - - - - -
-
- uint256 _amount,- - |
-
309 | - - -- - | -- - | - - - - -
-
- address _sender- - |
-
310 | - - -- - | -- - | - - - - -
-
- ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _bonder) {- - |
-
311 | - - -- - | -- - | - - - - -
-
- bool _moduleApproved = _approvals[_bonder].contains(msg.sender);- - |
-
312 | - - -- - | -- - | - - - - -
-
- bool _senderApproved = _approvals[_bonder].contains(_sender);- - |
-
313 | - - -- - | -- - | - - - - -- - - - | -
314 | - - -- - | -- - | - - - - -
-
- if (!(_moduleApproved && _senderApproved)) {- - |
-
315 | - - -- - | -- - | - - - - -
-
- revert HorizonAccountingExtension_NotAllowed();- - |
-
316 | - - -- - | -- - | - - - - -
-
- }- - |
-
317 | - - -- - | -- - | - - - - -- - - - | -
318 | - - -- - | -- - | - - - - -
-
- bondedForRequest[_bonder][_requestId] += _amount;- - |
-
319 | - - -- - | -- - | - - - - -- - - - | -
320 | - - -- - | -- - | - - - - -
-
- _bond(_bonder, _amount);- - |
-
321 | - - -- - | -- - | - - - - -- - - - | -
322 | - - -- - | -- - | - - - - -
-
- emit Bonded(_requestId, _bonder, _amount);- - |
-
323 | - - -- - | -- - | - - - - -
-
- }- - |
-
324 | - - -- - | -- - | - - - - -- - - - | -
325 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
326 | - - -- - | -- - | - - - - -
-
- function release(- - |
-
327 | - - -- - | -- - | - - - - -
-
- address _bonder,- - |
-
328 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId,- - |
-
329 | - - -- - | -- - | - - - - -
-
- IERC20, /* _token */- - |
-
330 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
331 | - - -- - | -- - | - - - - -
-
- ) external onlyAllowedModule(_requestId) onlyParticipant(_requestId, _bonder) {- - |
-
332 | - - -- - | -- - | - - - - -
-
- // Release the bond amount for the request for the user- - |
-
333 | - - -- - | -- - | - - - - -
-
- bondedForRequest[_bonder][_requestId] -= _amount;- - |
-
334 | - - -- - | -- - | - - - - -- - - - | -
335 | - - -- - | -- - | - - - - -
-
- _unbond(_bonder, _amount);- - |
-
336 | - - -- - | -- - | - - - - -- - - - | -
337 | - - -- - | -- - | - - - - -
-
- emit Released(_requestId, _bonder, _amount);- - |
-
338 | - - -- - | -- - | - - - - -
-
- }- - |
-
339 | - - -- - | -- - | - - - - -- - - - | -
340 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
341 | - - -- - | -- - | - - - - -
-
- function slash(bytes32 _disputeId, uint256 _usersToSlash, uint256 _maxUsersToCheck) external {- - |
-
342 | - - -- - | -- - | - - - - -
-
- EscalationResult memory _result = escalationResults[_disputeId];- - |
-
343 | - - -- - | -- - | - - - - -- - - - | -
344 | - - -- - | -- - | - - - - -
-
- if (_result.requestId == bytes32(0)) revert HorizonAccountingExtension_NoEscalationResult();- - |
-
345 | - - -- - | -- - | - - - - -- - - - | -
346 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _status = ORACLE.disputeStatus(_disputeId);- - |
-
347 | - - -- - | -- - | - - - - -- - - - | -
348 | - - -- - | -- - | - - - - -
-
- _slash(_disputeId, _usersToSlash, _maxUsersToCheck, _result, _status);- - |
-
349 | - - -- - | -- - | - - - - -
-
- }- - |
-
350 | - - -- - | -- - | - - - - -- - - - | -
351 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
352 | - - -- - | -- - | - - - - -
-
- function getEscalationResult(bytes32 _disputeId) external view returns (EscalationResult memory _escalationResult) {- - |
-
353 | - - -- - | -- - | - - - - -
-
- _escalationResult = escalationResults[_disputeId];- - |
-
354 | - - -- - | -- - | - - - - -
-
- }- - |
-
355 | - - -- - | -- - | - - - - -- - - - | -
356 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
357 | - - -- - | -- - | - - - - -
-
- function approvedModules(address _user) external view returns (address[] memory _approvedModules) {- - |
-
358 | - - -- - | -- - | - - - - -
-
- _approvedModules = _approvals[_user].values();- - |
-
359 | - - -- - | -- - | - - - - -
-
- }- - |
-
360 | - - -- - | -- - | - - - - -- - - - | -
361 | - - -- - | -- - | - - - - -
-
- /// @inheritdoc IHorizonAccountingExtension- - |
-
362 | - - -- - | -- - | - - - - -
-
- function setMaxUsersToCheck(uint128 _maxUsersToCheck) external {- - |
-
363 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ARBITRABLE.validateArbitrator(msg.sender);- - |
-
364 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setMaxUsersToCheck(_maxUsersToCheck);- - |
-
365 | - - -- - | -- - | - - - - -
-
- }- - |
-
366 | - - -- - | -- - | - - - - -- - - - | -
367 | - - -- - | -- - | - - - - -
-
- /**- - |
-
368 | - - -- - | -- - | - - - - -
-
- * @notice Set the maximum number of users to check.- - |
-
369 | - - -- - | -- - | - - - - -
-
- * @param _maxUsersToCheck The maximum number of users to check.- - |
-
370 | - - -- - | -- - | - - - - -
-
- */- - |
-
371 | - - -- - | -- - | - - - - -
-
- function _setMaxUsersToCheck(uint128 _maxUsersToCheck) internal {- - |
-
372 | - - -
-
- √
-
- |
- - - | - - - - -
-
- maxUsersToCheck = _maxUsersToCheck;- - |
-
373 | - - -- - | -- - | - - - - -- - - - | -
374 | - - -
-
- √
-
- |
- - - | - - - - -
-
- emit MaxUsersToCheckSet(_maxUsersToCheck);- - |
-
375 | - - -- - | -- - | - - - - -
-
- }- - |
-
376 | - - -- - | -- - | - - - - -- - - - | -
377 | - - -- - | -- - | - - - - -
-
- /**- - |
-
378 | - - -- - | -- - | - - - - -
-
- * @notice Slash the users that have pledged for a dispute.- - |
-
379 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The dispute id.- - |
-
380 | - - -- - | -- - | - - - - -
-
- * @param _usersToSlash The number of users to slash.- - |
-
381 | - - -- - | -- - | - - - - -
-
- * @param _maxUsersToCheck The maximum number of users to check.- - |
-
382 | - - -- - | -- - | - - - - -
-
- * @param _result The escalation result.- - |
-
383 | - - -- - | -- - | - - - - -
-
- * @param _status The dispute status.- - |
-
384 | - - -- - | -- - | - - - - -
-
- */- - |
-
385 | - - -- - | -- - | - - - - -
-
- function _slash(- - |
-
386 | - - -- - | -- - | - - - - -
-
- bytes32 _disputeId,- - |
-
387 | - - -- - | -- - | - - - - -
-
- uint256 _usersToSlash,- - |
-
388 | - - -- - | -- - | - - - - -
-
- uint256 _maxUsersToCheck,- - |
-
389 | - - -- - | -- - | - - - - -
-
- EscalationResult memory _result,- - |
-
390 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _status- - |
-
391 | - - -- - | -- - | - - - - -
-
- ) internal returns (uint256 _slashedAmount) {- - |
-
392 | - - -- - | -- - | - - - - -
-
- EnumerableSet.AddressSet storage _users = _pledgers[_disputeId];- - |
-
393 | - - -- - | -- - | - - - - -- - - - | -
394 | - - -- - | -- - | - - - - -
-
- uint256 _slashedUsers;- - |
-
395 | - - -- - | -- - | - - - - -
-
- address _user;- - |
-
396 | - - -- - | -- - | - - - - -
-
- uint256 _slashAmount;- - |
-
397 | - - -- - | -- - | - - - - -- - - - | -
398 | - - -- - | -- - | - - - - -
-
- uint256 _length = _users.length();- - |
-
399 | - - -- - | -- - | - - - - -- - - - | -
400 | - - -- - | -- - | - - - - -
-
- _maxUsersToCheck = _maxUsersToCheck > _length ? _length : _maxUsersToCheck;- - |
-
401 | - - -- - | -- - | - - - - -- - - - | -
402 | - - -- - | -- - | - - - - -
-
- for (uint256 _i; _i < _maxUsersToCheck && _slashedUsers < _usersToSlash; ++_i) {- - |
-
403 | - - -- - | -- - | - - - - -
-
- _user = _users.at(0);- - |
-
404 | - - -- - | -- - | - - - - -- - - - | -
405 | - - -- - | -- - | - - - - -
-
- // Check if the user is actually slashable- - |
-
406 | - - -- - | -- - | - - - - -
-
- _slashAmount = _calculateSlashAmount(_user, _result, _status);- - |
-
407 | - - -- - | -- - | - - - - -
-
- if (_slashAmount > 0) {- - |
-
408 | - - -- - | -- - | - - - - -
-
- // Slash the user- - |
-
409 | - - -- - | -- - | - - - - -
-
- HORIZON_STAKING.slash(_user, _slashAmount, _slashAmount, address(this));- - |
-
410 | - - -- - | -- - | - - - - -
-
- // TODO: What if `MIN_THAWING_PERIOD` has passed, all provision tokens have been thawed- - |
-
411 | - - -- - | -- - | - - - - -
-
- // and slashing is skipped or reverts (bricking `claimEscalationReward()`)?- - |
-
412 | - - -- - | -- - | - - - - -- - - - | -
413 | - - -- - | -- - | - - - - -
-
- _unbond(_user, _slashAmount);- - |
-
414 | - - -- - | -- - | - - - - -- - - - | -
415 | - - -- - | -- - | - - - - -
-
- _slashedAmount += _slashAmount;- - |
-
416 | - - -- - | -- - | - - - - -- - - - | -
417 | - - -- - | -- - | - - - - -
-
- ++_slashedUsers;- - |
-
418 | - - -- - | -- - | - - - - -
-
- }- - |
-
419 | - - -- - | -- - | - - - - -- - - - | -
420 | - - -- - | -- - | - - - - -
-
- // Remove the user from the list of users- - |
-
421 | - - -- - | -- - | - - - - -
-
- _users.remove(_user);- - |
-
422 | - - -- - | -- - | - - - - -
-
- }- - |
-
423 | - - -- - | -- - | - - - - -- - - - | -
424 | - - -- - | -- - | - - - - -
-
- disputeBalance[_disputeId] += _slashedAmount;- - |
-
425 | - - -- - | -- - | - - - - -
-
- }- - |
-
426 | - - -- - | -- - | - - - - -- - - - | -
427 | - - -- - | -- - | - - - - -
-
- /**- - |
-
428 | - - -- - | -- - | - - - - -
-
- * @notice Calculate the amount to slash for a user.- - |
-
429 | - - -- - | -- - | - - - - -
-
- * @param _pledger The address of the user.- - |
-
430 | - - -- - | -- - | - - - - -
-
- * @param _result The escalation result.- - |
-
431 | - - -- - | -- - | - - - - -
-
- * @param _status The dispute status.- - |
-
432 | - - -- - | -- - | - - - - -
-
- */- - |
-
433 | - - -- - | -- - | - - - - -
-
- function _calculateSlashAmount(- - |
-
434 | - - -- - | -- - | - - - - -
-
- address _pledger,- - |
-
435 | - - -- - | -- - | - - - - -
-
- EscalationResult memory _result,- - |
-
436 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus _status- - |
-
437 | - - -- - | -- - | - - - - -
-
- ) internal view returns (uint256 _slashAmount) {- - |
-
438 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId = _result.requestId;- - |
-
439 | - - -- - | -- - | - - - - -- - - - | -
440 | - - -- - | -- - | - - - - -
-
- uint256 _numberOfPledges;- - |
-
441 | - - -- - | -- - | - - - - -- - - - | -
442 | - - -- - | -- - | - - - - -
-
- // If Won slash the against pledges, if Lost slash the for pledges- - |
-
443 | - - -- - | -- - | - - - - -
-
- if (_status != IOracle.DisputeStatus.NoResolution) {- - |
-
444 | - - -- - | -- - | - - - - -
-
- _numberOfPledges = _status == IOracle.DisputeStatus.Won- - |
-
445 | - - -- - | -- - | - - - - -
-
- ? _result.bondEscalationModule.pledgesAgainstDispute(_requestId, _pledger)- - |
-
446 | - - -- - | -- - | - - - - -
-
- : _result.bondEscalationModule.pledgesForDispute(_requestId, _pledger);- - |
-
447 | - - -- - | -- - | - - - - -
-
- }- - |
-
448 | - - -- - | -- - | - - - - -- - - - | -
449 | - - -- - | -- - | - - - - -
-
- _slashAmount = _result.bondSize * _numberOfPledges;- - |
-
450 | - - -- - | -- - | - - - - -
-
- }- - |
-
451 | - - -- - | -- - | - - - - -- - - - | -
452 | - - -- - | -- - | - - - - -
-
- /**- - |
-
453 | - - -- - | -- - | - - - - -
-
- * @notice Bonds the tokens of the user.- - |
-
454 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user.- - |
-
455 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of tokens to bond.- - |
-
456 | - - -- - | -- - | - - - - -
-
- */- - |
-
457 | - - -- - | -- - | - - - - -
-
- function _bond(address _bonder, uint256 _amount) internal {- - |
-
458 | - - -- - | -- - | - - - - -
-
- IHorizonStaking.Provision memory _provisionData = HORIZON_STAKING.getProvision(_bonder, address(this));- - |
-
459 | - - -- - | -- - | - - - - -- - - - | -
460 | - - -- - | -- - | - - - - -
-
- if (_provisionData.maxVerifierCut != MAX_VERIFIER_CUT) revert HorizonAccountingExtension_InvalidMaxVerifierCut();- - |
-
461 | - - -- - | -- - | - - - - -
-
- if (_provisionData.thawingPeriod < MIN_THAWING_PERIOD) revert HorizonAccountingExtension_InvalidThawingPeriod();- - |
-
462 | - - -- - | -- - | - - - - -- - - - | -
463 | - - -- - | -- - | - - - - -
-
- uint256 _availableTokens = _provisionData.tokens - _provisionData.tokensThawing;- - |
-
464 | - - -- - | -- - | - - - - -
-
- if (_amount > _availableTokens) revert HorizonAccountingExtension_InsufficientTokens();- - |
-
465 | - - -- - | -- - | - - - - -- - - - | -
466 | - - -- - | -- - | - - - - -
-
- totalBonded[_bonder] += _amount;- - |
-
467 | - - -- - | -- - | - - - - -- - - - | -
468 | - - -- - | -- - | - - - - -
-
- if (totalBonded[_bonder] > _provisionData.tokens) {- - |
-
469 | - - -- - | -- - | - - - - -
-
- revert HorizonAccountingExtension_InsufficientBondedTokens();- - |
-
470 | - - -- - | -- - | - - - - -
-
- }- - |
-
471 | - - -- - | -- - | - - - - -
-
- }- - |
-
472 | - - -- - | -- - | - - - - -- - - - | -
473 | - - -- - | -- - | - - - - -
-
- /**- - |
-
474 | - - -- - | -- - | - - - - -
-
- * @notice Unbonds the tokens of the user.- - |
-
475 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user.- - |
-
476 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of tokens to unbond.- - |
-
477 | - - -- - | -- - | - - - - -
-
- */- - |
-
478 | - - -- - | -- - | - - - - -
-
- function _unbond(address _bonder, uint256 _amount) internal {- - |
-
479 | - - -- - | -- - | - - - - -
-
- if (_amount > totalBonded[_bonder]) revert HorizonAccountingExtension_InsufficientBondedTokens();- - |
-
480 | - - -- - | -- - | - - - - -
-
- totalBonded[_bonder] -= _amount;- - |
-
481 | - - -- - | -- - | - - - - -
-
- }- - |
-
482 | - - -- - | -- - | - - - - -
-
- }- - |
-
483 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- /**- - |
-
5 | - - -- - | -- - | - - - - -
-
- * @title Arbitrable- - |
-
6 | - - -- - | -- - | - - - - -
-
- * @notice Makes a contract subject to arbitration by The Graph- - |
-
7 | - - -- - | -- - | - - - - -
-
- */- - |
-
8 | - - -- - | -- - | - - - - -
-
- interface IArbitrable {- - |
-
9 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
10 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
11 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
12 | - - -- - | -- - | - - - - -- - - - | -
13 | - - -- - | -- - | - - - - -
-
- /**- - |
-
14 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when The Graph's Arbitrator is set- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @param _arbitrator The address of The Graph's Arbitrator- - |
-
16 | - - -- - | -- - | - - - - -
-
- */- - |
-
17 | - - -- - | -- - | - - - - -
-
- event SetArbitrator(address indexed _arbitrator);- - |
-
18 | - - -- - | -- - | - - - - -- - - - | -
19 | - - -- - | -- - | - - - - -
-
- /**- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when The Graph's Council is set- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @param _council The address of The Graph's Council- - |
-
22 | - - -- - | -- - | - - - - -
-
- */- - |
-
23 | - - -- - | -- - | - - - - -
-
- event SetCouncil(address indexed _council);- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- /**- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the pending The Graph's Council is set- - |
-
27 | - - -- - | -- - | - - - - -
-
- * @param _pendingCouncil The address of the pending The Graph's Council- - |
-
28 | - - -- - | -- - | - - - - -
-
- */- - |
-
29 | - - -- - | -- - | - - - - -
-
- event SetPendingCouncil(address indexed _pendingCouncil);- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
32 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
33 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- /**- - |
-
36 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the caller is not The Graph's Arbitrator- - |
-
37 | - - -- - | -- - | - - - - -
-
- */- - |
-
38 | - - -- - | -- - | - - - - -
-
- error Arbitrable_OnlyArbitrator();- - |
-
39 | - - -- - | -- - | - - - - -- - - - | -
40 | - - -- - | -- - | - - - - -
-
- /**- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the caller is not The Graph's Council- - |
-
42 | - - -- - | -- - | - - - - -
-
- */- - |
-
43 | - - -- - | -- - | - - - - -
-
- error Arbitrable_OnlyCouncil();- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- /**- - |
-
46 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the caller is not the pending The Graph's Council- - |
-
47 | - - -- - | -- - | - - - - -
-
- */- - |
-
48 | - - -- - | -- - | - - - - -
-
- error Arbitrable_OnlyPendingCouncil();- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
51 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
52 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- /**- - |
-
55 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of The Graph's Arbitrator- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @return __arbitrator The address of The Graph's Arbitrator- - |
-
57 | - - -- - | -- - | - - - - -
-
- */- - |
-
58 | - - -- - | -- - | - - - - -
-
- function arbitrator() external view returns (address __arbitrator);- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- /**- - |
-
61 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of The Graph's Council- - |
-
62 | - - -- - | -- - | - - - - -
-
- * @return __council The address of The Graph's Council- - |
-
63 | - - -- - | -- - | - - - - -
-
- */- - |
-
64 | - - -- - | -- - | - - - - -
-
- function council() external view returns (address __council);- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- /**- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the pending The Graph's Council- - |
-
68 | - - -- - | -- - | - - - - -
-
- * @return __pendingCouncil The address of the pending The Graph's Council- - |
-
69 | - - -- - | -- - | - - - - -
-
- */- - |
-
70 | - - -- - | -- - | - - - - -
-
- function pendingCouncil() external view returns (address __pendingCouncil);- - |
-
71 | - - -- - | -- - | - - - - -- - - - | -
72 | - - -- - | -- - | - - - - -
-
- /**- - |
-
73 | - - -- - | -- - | - - - - -
-
- * @notice Checks that the caller is The Graph's Arbitrator- - |
-
74 | - - -- - | -- - | - - - - -
-
- */- - |
-
75 | - - -- - | -- - | - - - - -
-
- function validateArbitrator(address _caller) external view;- - |
-
76 | - - -- - | -- - | - - - - -- - - - | -
77 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
78 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
79 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- /**- - |
-
82 | - - -- - | -- - | - - - - -
-
- * @notice Changes the address of The Graph's Arbitrator- - |
-
83 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Council- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @param _arbitrator The address of The Graph's Arbitrator- - |
-
85 | - - -- - | -- - | - - - - -
-
- */- - |
-
86 | - - -- - | -- - | - - - - -
-
- function setArbitrator(address _arbitrator) external;- - |
-
87 | - - -- - | -- - | - - - - -- - - - | -
88 | - - -- - | -- - | - - - - -
-
- /**- - |
-
89 | - - -- - | -- - | - - - - -
-
- * @notice Sets the address of the pending The Graph's Council- - |
-
90 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Council- - |
-
91 | - - -- - | -- - | - - - - -
-
- * @param _pendingCouncil The address of the pending The Graph's Council- - |
-
92 | - - -- - | -- - | - - - - -
-
- */- - |
-
93 | - - -- - | -- - | - - - - -
-
- function setPendingCouncil(address _pendingCouncil) external;- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- /**- - |
-
96 | - - -- - | -- - | - - - - -
-
- * @notice Changes the address of The Graph's Council to the pending one- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by the pending The Graph's Council- - |
-
98 | - - -- - | -- - | - - - - -
-
- */- - |
-
99 | - - -- - | -- - | - - - - -
-
- function confirmCouncil() external;- - |
-
100 | - - -- - | -- - | - - - - -
-
- }- - |
-
101 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol';- - |
-
6 | - - -- - | -- - | - - - - -
-
- import {IArbitratorModule} from- - |
-
7 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/modules/resolution/IArbitratorModule.sol';- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- import {IArbitrable} from 'interfaces/IArbitrable.sol';- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- /**- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @title CouncilArbitrator- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @notice Resolves disputes by arbitration by The Graph- - |
-
14 | - - -- - | -- - | - - - - -
-
- */- - |
-
15 | - - -- - | -- - | - - - - -
-
- interface ICouncilArbitrator is IArbitrator {- - |
-
16 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
17 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
18 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- /**- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @notice Parameters of the resolution as stored in the contract- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @param request The request data- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param response The response data- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param dispute The dispute data- - |
-
25 | - - -- - | -- - | - - - - -
-
- */- - |
-
26 | - - -- - | -- - | - - - - -
-
- struct ResolutionParameters {- - |
-
27 | - - -- - | -- - | - - - - -
-
- IOracle.Request request;- - |
-
28 | - - -- - | -- - | - - - - -
-
- IOracle.Response response;- - |
-
29 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute dispute;- - |
-
30 | - - -- - | -- - | - - - - -
-
- }- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
33 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
34 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- /**- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a resolution is started by the Arbitrator Module- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute that the resolution was started for- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _request The request data- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _response The response data- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @param _dispute The dispute data- - |
-
42 | - - -- - | -- - | - - - - -
-
- */- - |
-
43 | - - -- - | -- - | - - - - -
-
- event ResolutionStarted(- - |
-
44 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _disputeId, IOracle.Request _request, IOracle.Response _response, IOracle.Dispute _dispute- - |
-
45 | - - -- - | -- - | - - - - -
-
- );- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- /**- - |
-
48 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a dispute is arbitrated by The Graph's Arbitrator- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute that was arbitrated- - |
-
50 | - - -- - | -- - | - - - - -
-
- * @param _award The final result of the resolution- - |
-
51 | - - -- - | -- - | - - - - -
-
- */- - |
-
52 | - - -- - | -- - | - - - - -
-
- event DisputeArbitrated(bytes32 indexed _disputeId, IOracle.DisputeStatus _award);- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
55 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
56 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- /**- - |
-
59 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the caller is not the Arbitrator Module- - |
-
60 | - - -- - | -- - | - - - - -
-
- */- - |
-
61 | - - -- - | -- - | - - - - -
-
- error CouncilArbitrator_OnlyArbitratorModule();- - |
-
62 | - - -- - | -- - | - - - - -- - - - | -
63 | - - -- - | -- - | - - - - -
-
- /**- - |
-
64 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to arbitrate a dispute with no pending resolution- - |
-
65 | - - -- - | -- - | - - - - -
-
- */- - |
-
66 | - - -- - | -- - | - - - - -
-
- error CouncilArbitrator_InvalidDispute();- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- /**- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to arbitrate a dispute with an invalid award- - |
-
70 | - - -- - | -- - | - - - - -
-
- */- - |
-
71 | - - -- - | -- - | - - - - -
-
- error CouncilArbitrator_InvalidAward();- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- /**- - |
-
74 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to arbitrate a dispute that is already arbitrated- - |
-
75 | - - -- - | -- - | - - - - -
-
- */- - |
-
76 | - - -- - | -- - | - - - - -
-
- error CouncilArbitrator_DisputeAlreadyArbitrated();- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
79 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
80 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
81 | - - -- - | -- - | - - - - -- - - - | -
82 | - - -- - | -- - | - - - - -
-
- /**- - |
-
83 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the Oracle- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @return _oracle The address of the Oracle- - |
-
85 | - - -- - | -- - | - - - - -
-
- */- - |
-
86 | - - -- - | -- - | - - - - -
-
- function ORACLE() external view returns (IOracle _oracle);- - |
-
87 | - - -- - | -- - | - - - - -- - - - | -
88 | - - -- - | -- - | - - - - -
-
- /**- - |
-
89 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the Arbitrator Module- - |
-
90 | - - -- - | -- - | - - - - -
-
- * @return _arbitratorModule The address of the Arbitrator Module- - |
-
91 | - - -- - | -- - | - - - - -
-
- */- - |
-
92 | - - -- - | -- - | - - - - -
-
- function ARBITRATOR_MODULE() external view returns (IArbitratorModule _arbitratorModule);- - |
-
93 | - - -- - | -- - | - - - - -- - - - | -
94 | - - -- - | -- - | - - - - -
-
- /**- - |
-
95 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the arbitrable contract- - |
-
96 | - - -- - | -- - | - - - - -
-
- * @return _ARBITRABLE The address of the arbitrable contract- - |
-
97 | - - -- - | -- - | - - - - -
-
- */- - |
-
98 | - - -- - | -- - | - - - - -
-
- function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);- - |
-
99 | - - -- - | -- - | - - - - -- - - - | -
100 | - - -- - | -- - | - - - - -
-
- /**- - |
-
101 | - - -- - | -- - | - - - - -
-
- * @notice Returns the resolution data for a dispute- - |
-
102 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
103 | - - -- - | -- - | - - - - -
-
- * @return _request The request data- - |
-
104 | - - -- - | -- - | - - - - -
-
- * @return _response The response data- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @return _dispute The dispute data- - |
-
106 | - - -- - | -- - | - - - - -
-
- */- - |
-
107 | - - -- - | -- - | - - - - -
-
- function resolutions(bytes32 _disputeId)- - |
-
108 | - - -- - | -- - | - - - - -
-
- external- - |
-
109 | - - -- - | -- - | - - - - -
-
- view- - |
-
110 | - - -- - | -- - | - - - - -
-
- returns (IOracle.Request memory _request, IOracle.Response memory _response, IOracle.Dispute memory _dispute);- - |
-
111 | - - -- - | -- - | - - - - -- - - - | -
112 | - - -- - | -- - | - - - - -
-
- /**- - |
-
113 | - - -- - | -- - | - - - - -
-
- * @notice Returns the resolution parameters for a dispute- - |
-
114 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @return _resolutionParams The resolution parameters- - |
-
116 | - - -- - | -- - | - - - - -
-
- */- - |
-
117 | - - -- - | -- - | - - - - -
-
- function getResolution(bytes32 _disputeId) external view returns (ResolutionParameters memory _resolutionParams);- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
120 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
121 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
122 | - - -- - | -- - | - - - - -- - - - | -
123 | - - -- - | -- - | - - - - -
-
- /**- - |
-
124 | - - -- - | -- - | - - - - -
-
- * @notice Publishes the arbitration award, resolves a dispute and, if applicable, finalizes a request- - |
-
125 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Arbitrator- - |
-
126 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
127 | - - -- - | -- - | - - - - -
-
- * @param _award The result of the resolution for the dispute- - |
-
128 | - - -- - | -- - | - - - - -
-
- */- - |
-
129 | - - -- - | -- - | - - - - -
-
- function arbitrateDispute(bytes32 _disputeId, IOracle.DisputeStatus _award) external;- - |
-
130 | - - -- - | -- - | - - - - -
-
- }- - |
-
131 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IFinalityModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/finality/IFinalityModule.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- import {IArbitrable} from 'interfaces/IArbitrable.sol';- - |
-
8 | - - -- - | -- - | - - - - -
-
- import {IEBORequestCreator} from 'interfaces/IEBORequestCreator.sol';- - |
-
9 | - - -- - | -- - | - - - - -
-
- import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol';- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- /**- - |
-
12 | - - -- - | -- - | - - - - -
-
- * @title EBOFinalityModule- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing users to index data into the subgraph- - |
-
14 | - - -- - | -- - | - - - - -
-
- * as a result of a request being finalized- - |
-
15 | - - -- - | -- - | - - - - -
-
- */- - |
-
16 | - - -- - | -- - | - - - - -
-
- interface IEBOFinalityModule is IFinalityModule {- - |
-
17 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
18 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
19 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- /**- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the block number has been resolved for a particular epoch-chainId pair- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param _epoch The new epoch- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain ID- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _blockNumber The block number for the epoch-chainId pair- - |
-
26 | - - -- - | -- - | - - - - -
-
- */- - |
-
27 | - - -- - | -- - | - - - - -
-
- event NewEpoch(uint256 indexed _epoch, string indexed _chainId, uint256 _blockNumber);- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- /**- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a block number is amended- - |
-
31 | - - -- - | -- - | - - - - -
-
- * @param _epoch The epoch to amend- - |
-
32 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain ID to amend- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @param _blockNumber The amended block number- - |
-
34 | - - -- - | -- - | - - - - -
-
- */- - |
-
35 | - - -- - | -- - | - - - - -
-
- event AmendEpoch(uint256 indexed _epoch, string indexed _chainId, uint256 _blockNumber);- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- /**- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the EBORequestCreator is added- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- event AddEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- /**- - |
-
44 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when an EBORequestCreator is removed- - |
-
45 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
46 | - - -- - | -- - | - - - - -
-
- */- - |
-
47 | - - -- - | -- - | - - - - -
-
- event RemoveEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
50 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
51 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
52 | - - -- - | -- - | - - - - -- - - - | -
53 | - - -- - | -- - | - - - - -
-
- /**- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the requester is not the EBORequestCreator- - |
-
55 | - - -- - | -- - | - - - - -
-
- */- - |
-
56 | - - -- - | -- - | - - - - -
-
- error EBOFinalityModule_InvalidRequester();- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- /**- - |
-
59 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the lengths of chain IDs and block numbers do not match- - |
-
60 | - - -- - | -- - | - - - - -
-
- */- - |
-
61 | - - -- - | -- - | - - - - -
-
- error EBOFinalityModule_LengthMismatch();- - |
-
62 | - - -- - | -- - | - - - - -- - - - | -
63 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
64 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
65 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
66 | - - -- - | -- - | - - - - -- - - - | -
67 | - - -- - | -- - | - - - - -
-
- /**- - |
-
68 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the arbitrable contract- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @return _ARBITRABLE The address of the arbitrable contract- - |
-
70 | - - -- - | -- - | - - - - -
-
- */- - |
-
71 | - - -- - | -- - | - - - - -
-
- function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- /**- - |
-
74 | - - -- - | -- - | - - - - -
-
- * @notice Returns the EBORequestCreators allowed- - |
-
75 | - - -- - | -- - | - - - - -
-
- * @return _eboRequestCreators The EBORequestCreators allowed- - |
-
76 | - - -- - | -- - | - - - - -
-
- */- - |
-
77 | - - -- - | -- - | - - - - -
-
- function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators);- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
80 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
81 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- /**- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @notice Finalizes the request by publishing the response- - |
-
85 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by the Oracle- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @param _request The request being finalized- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @param _response The final response- - |
-
88 | - - -- - | -- - | - - - - -
-
- * @param _finalizer The address that initiated the finalization- - |
-
89 | - - -- - | -- - | - - - - -
-
- */- - |
-
90 | - - -- - | -- - | - - - - -
-
- function finalizeRequest(- - |
-
91 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
92 | - - -- - | -- - | - - - - -
-
- IOracle.Response calldata _response,- - |
-
93 | - - -- - | -- - | - - - - -
-
- address _finalizer- - |
-
94 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- /**- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @notice Allows to amend data in case of an error or an emergency- - |
-
98 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Arbitrator- - |
-
99 | - - -- - | -- - | - - - - -
-
- * @param _epoch The epoch to amend- - |
-
100 | - - -- - | -- - | - - - - -
-
- * @param _chainIds The chain IDs to amend- - |
-
101 | - - -- - | -- - | - - - - -
-
- * @param _blockNumbers The amended block numbers- - |
-
102 | - - -- - | -- - | - - - - -
-
- */- - |
-
103 | - - -- - | -- - | - - - - -
-
- function amendEpoch(uint256 _epoch, string[] calldata _chainIds, uint256[] calldata _blockNumbers) external;- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -- - | -- - | - - - - -
-
- /**- - |
-
106 | - - -- - | -- - | - - - - -
-
- * @notice Adds the address of the EBORequestCreator- - |
-
107 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Arbitrator- - |
-
108 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
109 | - - -- - | -- - | - - - - -
-
- */- - |
-
110 | - - -- - | -- - | - - - - -
-
- function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;- - |
-
111 | - - -- - | -- - | - - - - -- - - - | -
112 | - - -- - | -- - | - - - - -
-
- /**- - |
-
113 | - - -- - | -- - | - - - - -
-
- * @notice Removes the address of the EBORequestCreator- - |
-
114 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Arbitrator- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
116 | - - -- - | -- - | - - - - -
-
- */- - |
-
117 | - - -- - | -- - | - - - - -
-
- function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -- - | -- - | - - - - -
-
- /**- - |
-
120 | - - -- - | -- - | - - - - -
-
- * @notice Decodes the request data- - |
-
121 | - - -- - | -- - | - - - - -
-
- * @param _data The request data- - |
-
122 | - - -- - | -- - | - - - - -
-
- * @return _params The decoded request data- - |
-
123 | - - -- - | -- - | - - - - -
-
- */- - |
-
124 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data)- - |
-
125 | - - -- - | -- - | - - - - -
-
- external- - |
-
126 | - - -- - | -- - | - - - - -
-
- pure- - |
-
127 | - - -- - | -- - | - - - - -
-
- returns (IEBORequestModule.RequestParameters memory _params);- - |
-
128 | - - -- - | -- - | - - - - -- - - - | -
129 | - - -- - | -- - | - - - - -
-
- /**- - |
-
130 | - - -- - | -- - | - - - - -
-
- * @notice Decodes the response data- - |
-
131 | - - -- - | -- - | - - - - -
-
- * @param _data The response data- - |
-
132 | - - -- - | -- - | - - - - -
-
- * @return _block The decoded response data which is the block number- - |
-
133 | - - -- - | -- - | - - - - -
-
- */- - |
-
134 | - - -- - | -- - | - - - - -
-
- function decodeResponseData(bytes calldata _data) external pure returns (uint256 _block);- - |
-
135 | - - -- - | -- - | - - - - -
-
- }- - |
-
136 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IBondEscalationModule} from- - |
-
6 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/modules/dispute/IBondEscalationModule.sol';- - |
-
7 | - - -- - | -- - | - - - - -
-
- import {IArbitratorModule} from- - |
-
8 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/modules/resolution/IArbitratorModule.sol';- - |
-
9 | - - -- - | -- - | - - - - -
-
- import {IBondedResponseModule} from- - |
-
10 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/modules/response/IBondedResponseModule.sol';- - |
-
11 | - - -- - | -- - | - - - - -
-
- import {IEpochManager} from 'interfaces/external/IEpochManager.sol';- - |
-
12 | - - -- - | -- - | - - - - -- - - - | -
13 | - - -- - | -- - | - - - - -
-
- import {IArbitrable} from 'interfaces/IArbitrable.sol';- - |
-
14 | - - -- - | -- - | - - - - -
-
- import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol';- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- interface IEBORequestCreator {- - |
-
17 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
18 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
19 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- /**- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a request is created- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param _requestId The id of the request- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param _request The request created- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param _epoch The epoch of the request- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id of the request- - |
-
27 | - - -- - | -- - | - - - - -
-
- */- - |
-
28 | - - -- - | -- - | - - - - -
-
- event RequestCreated(- - |
-
29 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, IOracle.Request _request, uint256 indexed _epoch, string indexed _chainId- - |
-
30 | - - -- - | -- - | - - - - -
-
- );- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- /**- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a chain is added- - |
-
34 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id added- - |
-
35 | - - -- - | -- - | - - - - -
-
- */- - |
-
36 | - - -- - | -- - | - - - - -
-
- event ChainAdded(string indexed _chainId);- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- /**- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when a chain is removed- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id removed- - |
-
41 | - - -- - | -- - | - - - - -
-
- */- - |
-
42 | - - -- - | -- - | - - - - -
-
- event ChainRemoved(string indexed _chainId);- - |
-
43 | - - -- - | -- - | - - - - -- - - - | -
44 | - - -- - | -- - | - - - - -
-
- /**- - |
-
45 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the request data module is set- - |
-
46 | - - -- - | -- - | - - - - -
-
- * @param _requestModule The request module- - |
-
47 | - - -- - | -- - | - - - - -
-
- * @param _requestModuleData The request module data- - |
-
48 | - - -- - | -- - | - - - - -
-
- */- - |
-
49 | - - -- - | -- - | - - - - -
-
- event RequestModuleDataSet(address indexed _requestModule, IEBORequestModule.RequestParameters _requestModuleData);- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- /**- - |
-
52 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the response data module is set- - |
-
53 | - - -- - | -- - | - - - - -
-
- * @param _responseModule The response module- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @param _responseModuleData The response module data- - |
-
55 | - - -- - | -- - | - - - - -
-
- */- - |
-
56 | - - -- - | -- - | - - - - -
-
- event ResponseModuleDataSet(- - |
-
57 | - - -- - | -- - | - - - - -
-
- address indexed _responseModule, IBondedResponseModule.RequestParameters _responseModuleData- - |
-
58 | - - -- - | -- - | - - - - -
-
- );- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- /**- - |
-
61 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the dispute data module is set- - |
-
62 | - - -- - | -- - | - - - - -
-
- * @param _disputeModule The dispute module- - |
-
63 | - - -- - | -- - | - - - - -
-
- * @param _disputeModuleData The dispute module data- - |
-
64 | - - -- - | -- - | - - - - -
-
- */- - |
-
65 | - - -- - | -- - | - - - - -
-
- event DisputeModuleDataSet(- - |
-
66 | - - -- - | -- - | - - - - -
-
- address indexed _disputeModule, IBondEscalationModule.RequestParameters _disputeModuleData- - |
-
67 | - - -- - | -- - | - - - - -
-
- );- - |
-
68 | - - -- - | -- - | - - - - -- - - - | -
69 | - - -- - | -- - | - - - - -
-
- /**- - |
-
70 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the resolution data module is set- - |
-
71 | - - -- - | -- - | - - - - -
-
- * @param _resolutionModule The resolution module- - |
-
72 | - - -- - | -- - | - - - - -
-
- * @param _resolutionModuleData The resolution module data- - |
-
73 | - - -- - | -- - | - - - - -
-
- */- - |
-
74 | - - -- - | -- - | - - - - -
-
- event ResolutionModuleDataSet(- - |
-
75 | - - -- - | -- - | - - - - -
-
- address indexed _resolutionModule, IArbitratorModule.RequestParameters _resolutionModuleData- - |
-
76 | - - -- - | -- - | - - - - -
-
- );- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- /**- - |
-
79 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the finality data module is set- - |
-
80 | - - -- - | -- - | - - - - -
-
- * @param _finalityModule The finality module- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @param _finalityModuleData The finality module data- - |
-
82 | - - -- - | -- - | - - - - -
-
- */- - |
-
83 | - - -- - | -- - | - - - - -
-
- event FinalityModuleDataSet(address indexed _finalityModule, bytes _finalityModuleData);- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- /**- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the epoch manager is set- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @param _epochManager The epoch manager- - |
-
88 | - - -- - | -- - | - - - - -
-
- */- - |
-
89 | - - -- - | -- - | - - - - -
-
- event EpochManagerSet(IEpochManager indexed _epochManager);- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
92 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
93 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- /**- - |
-
96 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the nonce is not zero- - |
-
97 | - - -- - | -- - | - - - - -
-
- */- - |
-
98 | - - -- - | -- - | - - - - -
-
- error EBORequestCreator_InvalidNonce();- - |
-
99 | - - -- - | -- - | - - - - -
-
- /**- - |
-
100 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the chain is already added- - |
-
101 | - - -- - | -- - | - - - - -
-
- */- - |
-
102 | - - -- - | -- - | - - - - -
-
- error EBORequestCreator_ChainAlreadyAdded();- - |
-
103 | - - -- - | -- - | - - - - -- - - - | -
104 | - - -- - | -- - | - - - - -
-
- /**- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the request is already created- - |
-
106 | - - -- - | -- - | - - - - -
-
- */- - |
-
107 | - - -- - | -- - | - - - - -
-
- error EBORequestCreator_RequestAlreadyCreated();- - |
-
108 | - - -- - | -- - | - - - - -- - - - | -
109 | - - -- - | -- - | - - - - -
-
- /**- - |
-
110 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the chain is not added- - |
-
111 | - - -- - | -- - | - - - - -
-
- */- - |
-
112 | - - -- - | -- - | - - - - -
-
- error EBORequestCreator_ChainNotAdded();- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- /**- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the epoch is not valid- - |
-
116 | - - -- - | -- - | - - - - -
-
- */- - |
-
117 | - - -- - | -- - | - - - - -
-
- error EBORequestCreator_InvalidEpoch();- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
120 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
121 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
122 | - - -- - | -- - | - - - - -- - - - | -
123 | - - -- - | -- - | - - - - -
-
- /**- - |
-
124 | - - -- - | -- - | - - - - -
-
- * @notice The oracle contract- - |
-
125 | - - -- - | -- - | - - - - -
-
- * @return _ORACLE The oracle contract- - |
-
126 | - - -- - | -- - | - - - - -
-
- */- - |
-
127 | - - -- - | -- - | - - - - -
-
- function ORACLE() external view returns (IOracle _ORACLE);- - |
-
128 | - - -- - | -- - | - - - - -- - - - | -
129 | - - -- - | -- - | - - - - -
-
- /**- - |
-
130 | - - -- - | -- - | - - - - -
-
- * @notice The first valid epoch to create requests- - |
-
131 | - - -- - | -- - | - - - - -
-
- * @return _START_EPOCH The start epoch- - |
-
132 | - - -- - | -- - | - - - - -
-
- */- - |
-
133 | - - -- - | -- - | - - - - -
-
- function START_EPOCH() external view returns (uint256 _START_EPOCH);- - |
-
134 | - - -- - | -- - | - - - - -- - - - | -
135 | - - -- - | -- - | - - - - -
-
- /**- - |
-
136 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the arbitrable contract- - |
-
137 | - - -- - | -- - | - - - - -
-
- * @return _ARBITRABLE The address of the arbitrable contract- - |
-
138 | - - -- - | -- - | - - - - -
-
- */- - |
-
139 | - - -- - | -- - | - - - - -
-
- function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);- - |
-
140 | - - -- - | -- - | - - - - -- - - - | -
141 | - - -- - | -- - | - - - - -
-
- /**- - |
-
142 | - - -- - | -- - | - - - - -
-
- * @notice The epoch manager contract- - |
-
143 | - - -- - | -- - | - - - - -
-
- * @return _epochManager The epoch manager contract- - |
-
144 | - - -- - | -- - | - - - - -
-
- */- - |
-
145 | - - -- - | -- - | - - - - -
-
- function epochManager() external view returns (IEpochManager _epochManager);- - |
-
146 | - - -- - | -- - | - - - - -- - - - | -
147 | - - -- - | -- - | - - - - -
-
- /**- - |
-
148 | - - -- - | -- - | - - - - -
-
- * @notice The request data- - |
-
149 | - - -- - | -- - | - - - - -
-
- * @return _nonce The nonce- - |
-
150 | - - -- - | -- - | - - - - -
-
- * @return _requester The requester address- - |
-
151 | - - -- - | -- - | - - - - -
-
- * @return _requestModule The request module address- - |
-
152 | - - -- - | -- - | - - - - -
-
- * @return _responseModule The response module address- - |
-
153 | - - -- - | -- - | - - - - -
-
- * @return _disputeModule The dispute module address- - |
-
154 | - - -- - | -- - | - - - - -
-
- * @return _resolutionModule The resolution module address- - |
-
155 | - - -- - | -- - | - - - - -
-
- * @return _finalityModule The finality module address- - |
-
156 | - - -- - | -- - | - - - - -
-
- * @return _requestModuleData The request module data- - |
-
157 | - - -- - | -- - | - - - - -
-
- * @return _responseModuleData The response module data- - |
-
158 | - - -- - | -- - | - - - - -
-
- * @return _disputeModuleData The dispute module data- - |
-
159 | - - -- - | -- - | - - - - -
-
- * @return _resolutionModuleData The resolution module data- - |
-
160 | - - -- - | -- - | - - - - -
-
- * @return _finalityModuleData The finality module data- - |
-
161 | - - -- - | -- - | - - - - -
-
- */- - |
-
162 | - - -- - | -- - | - - - - -
-
- function requestData()- - |
-
163 | - - -- - | -- - | - - - - -
-
- external- - |
-
164 | - - -- - | -- - | - - - - -
-
- view- - |
-
165 | - - -- - | -- - | - - - - -
-
- returns (- - |
-
166 | - - -- - | -- - | - - - - -
-
- uint96 _nonce,- - |
-
167 | - - -- - | -- - | - - - - -
-
- address _requester,- - |
-
168 | - - -- - | -- - | - - - - -
-
- address _requestModule,- - |
-
169 | - - -- - | -- - | - - - - -
-
- address _responseModule,- - |
-
170 | - - -- - | -- - | - - - - -
-
- address _disputeModule,- - |
-
171 | - - -- - | -- - | - - - - -
-
- address _resolutionModule,- - |
-
172 | - - -- - | -- - | - - - - -
-
- address _finalityModule,- - |
-
173 | - - -- - | -- - | - - - - -
-
- bytes memory _requestModuleData,- - |
-
174 | - - -- - | -- - | - - - - -
-
- bytes memory _responseModuleData,- - |
-
175 | - - -- - | -- - | - - - - -
-
- bytes memory _disputeModuleData,- - |
-
176 | - - -- - | -- - | - - - - -
-
- bytes memory _resolutionModuleData,- - |
-
177 | - - -- - | -- - | - - - - -
-
- bytes memory _finalityModuleData- - |
-
178 | - - -- - | -- - | - - - - -
-
- );- - |
-
179 | - - -- - | -- - | - - - - -- - - - | -
180 | - - -- - | -- - | - - - - -
-
- /**- - |
-
181 | - - -- - | -- - | - - - - -
-
- * @notice The request data- - |
-
182 | - - -- - | -- - | - - - - -
-
- * @return _requestData The request data- - |
-
183 | - - -- - | -- - | - - - - -
-
- */- - |
-
184 | - - -- - | -- - | - - - - -
-
- function getRequestData() external view returns (IOracle.Request memory _requestData);- - |
-
185 | - - -- - | -- - | - - - - -- - - - | -
186 | - - -- - | -- - | - - - - -
-
- /**- - |
-
187 | - - -- - | -- - | - - - - -
-
- * @notice The request id per chain and epoch- - |
-
188 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id- - |
-
189 | - - -- - | -- - | - - - - -
-
- * @param _epoch The epoch- - |
-
190 | - - -- - | -- - | - - - - -
-
- * @return _requestId The request id- - |
-
191 | - - -- - | -- - | - - - - -
-
- */- - |
-
192 | - - -- - | -- - | - - - - -
-
- function requestIdPerChainAndEpoch(- - |
-
193 | - - -- - | -- - | - - - - -
-
- string calldata _chainId,- - |
-
194 | - - -- - | -- - | - - - - -
-
- uint256 _epoch- - |
-
195 | - - -- - | -- - | - - - - -
-
- ) external view returns (bytes32 _requestId);- - |
-
196 | - - -- - | -- - | - - - - -- - - - | -
197 | - - -- - | -- - | - - - - -
-
- /**- - |
-
198 | - - -- - | -- - | - - - - -
-
- * @notice Returns the allowed chain ids- - |
-
199 | - - -- - | -- - | - - - - -
-
- * @return _chainIds The allowed chain ids- - |
-
200 | - - -- - | -- - | - - - - -
-
- */- - |
-
201 | - - -- - | -- - | - - - - -
-
- function getAllowedChainIds() external view returns (bytes32[] memory _chainIds);- - |
-
202 | - - -- - | -- - | - - - - -- - - - | -
203 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
204 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
205 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
206 | - - -- - | -- - | - - - - -- - - - | -
207 | - - -- - | -- - | - - - - -
-
- /**- - |
-
208 | - - -- - | -- - | - - - - -
-
- * @notice Create request- - |
-
209 | - - -- - | -- - | - - - - -
-
- * @param _epoch The epoch of the request- - |
-
210 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id to update- - |
-
211 | - - -- - | -- - | - - - - -
-
- */- - |
-
212 | - - -- - | -- - | - - - - -
-
- function createRequest(uint256 _epoch, string calldata _chainId) external;- - |
-
213 | - - -- - | -- - | - - - - -- - - - | -
214 | - - -- - | -- - | - - - - -
-
- /**- - |
-
215 | - - -- - | -- - | - - - - -
-
- * @notice Add a chain to the allowed chains which can be updated- - |
-
216 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id to add- - |
-
217 | - - -- - | -- - | - - - - -
-
- */- - |
-
218 | - - -- - | -- - | - - - - -
-
- function addChain(string calldata _chainId) external;- - |
-
219 | - - -- - | -- - | - - - - -- - - - | -
220 | - - -- - | -- - | - - - - -
-
- /**- - |
-
221 | - - -- - | -- - | - - - - -
-
- * @notice Remove a chain from the allowed chains which can be updated- - |
-
222 | - - -- - | -- - | - - - - -
-
- * @param _chainId The chain id to remove- - |
-
223 | - - -- - | -- - | - - - - -
-
- */- - |
-
224 | - - -- - | -- - | - - - - -
-
- function removeChain(string calldata _chainId) external;- - |
-
225 | - - -- - | -- - | - - - - -- - - - | -
226 | - - -- - | -- - | - - - - -
-
- /**- - |
-
227 | - - -- - | -- - | - - - - -
-
- * @notice Set the request data module- - |
-
228 | - - -- - | -- - | - - - - -
-
- * @param _requestModule The request module- - |
-
229 | - - -- - | -- - | - - - - -
-
- * @param _requestModuleData The request module data- - |
-
230 | - - -- - | -- - | - - - - -
-
- */- - |
-
231 | - - -- - | -- - | - - - - -
-
- function setRequestModuleData(- - |
-
232 | - - -- - | -- - | - - - - -
-
- address _requestModule,- - |
-
233 | - - -- - | -- - | - - - - -
-
- IEBORequestModule.RequestParameters calldata _requestModuleData- - |
-
234 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
235 | - - -- - | -- - | - - - - -- - - - | -
236 | - - -- - | -- - | - - - - -
-
- /**- - |
-
237 | - - -- - | -- - | - - - - -
-
- * @notice Set the response data module- - |
-
238 | - - -- - | -- - | - - - - -
-
- * @param _responseModule The response module- - |
-
239 | - - -- - | -- - | - - - - -
-
- * @param _responseModuleData The response module data- - |
-
240 | - - -- - | -- - | - - - - -
-
- */- - |
-
241 | - - -- - | -- - | - - - - -
-
- function setResponseModuleData(- - |
-
242 | - - -- - | -- - | - - - - -
-
- address _responseModule,- - |
-
243 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule.RequestParameters calldata _responseModuleData- - |
-
244 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
245 | - - -- - | -- - | - - - - -- - - - | -
246 | - - -- - | -- - | - - - - -
-
- /**- - |
-
247 | - - -- - | -- - | - - - - -
-
- * @notice Set the dispute data module- - |
-
248 | - - -- - | -- - | - - - - -
-
- * @param _disputeModule The dispute module- - |
-
249 | - - -- - | -- - | - - - - -
-
- * @param _disputeModuleData The dispute module data- - |
-
250 | - - -- - | -- - | - - - - -
-
- */- - |
-
251 | - - -- - | -- - | - - - - -
-
- function setDisputeModuleData(- - |
-
252 | - - -- - | -- - | - - - - -
-
- address _disputeModule,- - |
-
253 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule.RequestParameters calldata _disputeModuleData- - |
-
254 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
255 | - - -- - | -- - | - - - - -- - - - | -
256 | - - -- - | -- - | - - - - -
-
- /**- - |
-
257 | - - -- - | -- - | - - - - -
-
- * @notice Set the resolution data module- - |
-
258 | - - -- - | -- - | - - - - -
-
- * @param _resolutionModule The resolution module- - |
-
259 | - - -- - | -- - | - - - - -
-
- * @param _resolutionModuleData The resolution module data- - |
-
260 | - - -- - | -- - | - - - - -
-
- */- - |
-
261 | - - -- - | -- - | - - - - -
-
- function setResolutionModuleData(- - |
-
262 | - - -- - | -- - | - - - - -
-
- address _resolutionModule,- - |
-
263 | - - -- - | -- - | - - - - -
-
- IArbitratorModule.RequestParameters calldata _resolutionModuleData- - |
-
264 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
265 | - - -- - | -- - | - - - - -- - - - | -
266 | - - -- - | -- - | - - - - -
-
- /**- - |
-
267 | - - -- - | -- - | - - - - -
-
- * @notice Set the finality data module- - |
-
268 | - - -- - | -- - | - - - - -
-
- * @param _finalityModule The finality module- - |
-
269 | - - -- - | -- - | - - - - -
-
- */- - |
-
270 | - - -- - | -- - | - - - - -
-
- function setFinalityModuleData(address _finalityModule) external;- - |
-
271 | - - -- - | -- - | - - - - -- - - - | -
272 | - - -- - | -- - | - - - - -
-
- /**- - |
-
273 | - - -- - | -- - | - - - - -
-
- * @notice Set the epoch manager- - |
-
274 | - - -- - | -- - | - - - - -
-
- * @param _epochManager The epoch manager- - |
-
275 | - - -- - | -- - | - - - - -
-
- */- - |
-
276 | - - -- - | -- - | - - - - -
-
- function setEpochManager(IEpochManager _epochManager) external;- - |
-
277 | - - -- - | -- - | - - - - -
-
- }- - |
-
278 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IRequestModule} from '@defi-wonderland/prophet-core/solidity/interfaces/modules/request/IRequestModule.sol';- - |
-
6 | - - -- - | -- - | - - - - -
-
- import {IAccountingExtension} from- - |
-
7 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IAccountingExtension.sol';- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- import {IArbitrable} from 'interfaces/IArbitrable.sol';- - |
-
10 | - - -- - | -- - | - - - - -
-
- import {IEBORequestCreator} from 'interfaces/IEBORequestCreator.sol';- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- /**- - |
-
13 | - - -- - | -- - | - - - - -
-
- * @title EBORequestModule- - |
-
14 | - - -- - | -- - | - - - - -
-
- * @notice Module allowing users to create a request for RPC data for a specific epoch- - |
-
15 | - - -- - | -- - | - - - - -
-
- */- - |
-
16 | - - -- - | -- - | - - - - -
-
- interface IEBORequestModule is IRequestModule {- - |
-
17 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
18 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
19 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- /**- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @notice Parameters of the request as stored in the module- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param epoch The epoch for which the data is requested- - |
-
24 | - - -- - | -- - | - - - - -
-
- * @param chainId The chain ID for which the data is requested- - |
-
25 | - - -- - | -- - | - - - - -
-
- * @param accountingExtension The address of the AccountingExtension- - |
-
26 | - - -- - | -- - | - - - - -
-
- * @param paymentAmount The amount of payment for the request- - |
-
27 | - - -- - | -- - | - - - - -
-
- */- - |
-
28 | - - -- - | -- - | - - - - -
-
- struct RequestParameters {- - |
-
29 | - - -- - | -- - | - - - - -
-
- uint256 epoch;- - |
-
30 | - - -- - | -- - | - - - - -
-
- string chainId;- - |
-
31 | - - -- - | -- - | - - - - -
-
- IAccountingExtension accountingExtension;- - |
-
32 | - - -- - | -- - | - - - - -
-
- uint256 paymentAmount;- - |
-
33 | - - -- - | -- - | - - - - -
-
- }- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
36 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
37 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
38 | - - -- - | -- - | - - - - -- - - - | -
39 | - - -- - | -- - | - - - - -
-
- /**- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when the EBORequestCreator is added- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
42 | - - -- - | -- - | - - - - -
-
- */- - |
-
43 | - - -- - | -- - | - - - - -
-
- event AddEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- /**- - |
-
46 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when an EBORequestCreator is removed- - |
-
47 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
48 | - - -- - | -- - | - - - - -
-
- */- - |
-
49 | - - -- - | -- - | - - - - -
-
- event RemoveEBORequestCreator(IEBORequestCreator indexed _eboRequestCreator);- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
52 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
53 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
54 | - - -- - | -- - | - - - - -- - - - | -
55 | - - -- - | -- - | - - - - -
-
- /**- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the requester is not the EBORequestCreator- - |
-
57 | - - -- - | -- - | - - - - -
-
- */- - |
-
58 | - - -- - | -- - | - - - - -
-
- error EBORequestModule_InvalidRequester();- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
61 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
62 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- /**- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @notice Returns the address of the arbitrable contract- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @return _ARBITRABLE The address of the arbitrable contract- - |
-
67 | - - -- - | -- - | - - - - -
-
- */- - |
-
68 | - - -- - | -- - | - - - - -
-
- function ARBITRABLE() external view returns (IArbitrable _ARBITRABLE);- - |
-
69 | - - -- - | -- - | - - - - -- - - - | -
70 | - - -- - | -- - | - - - - -
-
- /**- - |
-
71 | - - -- - | -- - | - - - - -
-
- * @notice Returns the EBORequestCreators allowed- - |
-
72 | - - -- - | -- - | - - - - -
-
- * @return _eboRequestCreators The EBORequestCreators allowed- - |
-
73 | - - -- - | -- - | - - - - -
-
- */- - |
-
74 | - - -- - | -- - | - - - - -
-
- function getAllowedEBORequestCreators() external view returns (address[] memory _eboRequestCreators);- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
77 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
78 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
79 | - - -- - | -- - | - - - - -- - - - | -
80 | - - -- - | -- - | - - - - -
-
- /**- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @notice Executes pre-request logic, bonding the requester's funds- - |
-
82 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by the Oracle- - |
-
83 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @param _data The data of the request- - |
-
85 | - - -- - | -- - | - - - - -
-
- * @param _requester The address of the requester- - |
-
86 | - - -- - | -- - | - - - - -
-
- */- - |
-
87 | - - -- - | -- - | - - - - -
-
- function createRequest(bytes32 _requestId, bytes calldata _data, address _requester) external;- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- /**- - |
-
90 | - - -- - | -- - | - - - - -
-
- * @notice Adds the address of the EBORequestCreator- - |
-
91 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Arbitrator- - |
-
92 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
93 | - - -- - | -- - | - - - - -
-
- */- - |
-
94 | - - -- - | -- - | - - - - -
-
- function addEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- /**- - |
-
97 | - - -- - | -- - | - - - - -
-
- * @notice Removes an EBORequestCreator- - |
-
98 | - - -- - | -- - | - - - - -
-
- * @dev Callable only by The Graph's Arbitrator- - |
-
99 | - - -- - | -- - | - - - - -
-
- * @param _eboRequestCreator The address of the EBORequestCreator- - |
-
100 | - - -- - | -- - | - - - - -
-
- */- - |
-
101 | - - -- - | -- - | - - - - -
-
- function removeEBORequestCreator(IEBORequestCreator _eboRequestCreator) external;- - |
-
102 | - - -- - | -- - | - - - - -- - - - | -
103 | - - -- - | -- - | - - - - -
-
- /**- - |
-
104 | - - -- - | -- - | - - - - -
-
- * @notice Determines how to decode the inputted request data- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @param _data The encoded request parameters- - |
-
106 | - - -- - | -- - | - - - - -
-
- * @return _params The struct containing the parameters for the request- - |
-
107 | - - -- - | -- - | - - - - -
-
- */- - |
-
108 | - - -- - | -- - | - - - - -
-
- function decodeRequestData(bytes calldata _data) external pure returns (RequestParameters memory _params);- - |
-
109 | - - -- - | -- - | - - - - -
-
- }- - |
-
110 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from '@defi-wonderland/prophet-core/solidity/interfaces/IOracle.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IValidator} from '@defi-wonderland/prophet-core/solidity/interfaces/IValidator.sol';- - |
-
6 | - - -- - | -- - | - - - - -
-
- import {IBondEscalationModule} from- - |
-
7 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/modules/dispute/IBondEscalationModule.sol';- - |
-
8 | - - -- - | -- - | - - - - -
-
- import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';- - |
-
9 | - - -- - | -- - | - - - - -
-
- import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol';- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- import {IArbitrable} from 'interfaces/IArbitrable.sol';- - |
-
12 | - - -- - | -- - | - - - - -- - - - | -
13 | - - -- - | -- - | - - - - -
-
- interface IHorizonAccountingExtension is IValidator {- - |
-
14 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
15 | - - -- - | -- - | - - - - -
-
- EVENTS- - |
-
16 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
18 | - - -- - | -- - | - - - - -
-
- /**- - |
-
19 | - - -- - | -- - | - - - - -
-
- * @notice A payment between users has been made- - |
-
20 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
21 | - - -- - | -- - | - - - - -
-
- * @param _beneficiary The user receiving the tokens- - |
-
22 | - - -- - | -- - | - - - - -
-
- * @param _payer The user who is getting its tokens transferred- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT transferred- - |
-
24 | - - -- - | -- - | - - - - -
-
- */- - |
-
25 | - - -- - | -- - | - - - - -
-
- event Paid(bytes32 indexed _requestId, address indexed _beneficiary, address indexed _payer, uint256 _amount);- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- /**- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @notice User's funds have been bonded- - |
-
29 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
30 | - - -- - | -- - | - - - - -
-
- * @param _bonder The user who is getting its tokens bonded- - |
-
31 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT bonded- - |
-
32 | - - -- - | -- - | - - - - -
-
- */- - |
-
33 | - - -- - | -- - | - - - - -
-
- event Bonded(bytes32 indexed _requestId, address indexed _bonder, uint256 _amount);- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- /**- - |
-
36 | - - -- - | -- - | - - - - -
-
- * @notice User's funds have been released- - |
-
37 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
38 | - - -- - | -- - | - - - - -
-
- * @param _beneficiary The user who is getting its tokens released- - |
-
39 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT released- - |
-
40 | - - -- - | -- - | - - - - -
-
- */- - |
-
41 | - - -- - | -- - | - - - - -
-
- event Released(bytes32 indexed _requestId, address indexed _beneficiary, uint256 _amount);- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- /**- - |
-
44 | - - -- - | -- - | - - - - -
-
- * @notice A user pledged tokens for one of the sides of a dispute- - |
-
45 | - - -- - | -- - | - - - - -
-
- *- - |
-
46 | - - -- - | -- - | - - - - -
-
- * @param _pledger The user who pledged the tokens- - |
-
47 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
48 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
49 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT pledged by the user- - |
-
50 | - - -- - | -- - | - - - - -
-
- */- - |
-
51 | - - -- - | -- - | - - - - -
-
- event Pledged(address indexed _pledger, bytes32 indexed _requestId, bytes32 indexed _disputeId, uint256 _amount);- - |
-
52 | - - -- - | -- - | - - - - -- - - - | -
53 | - - -- - | -- - | - - - - -
-
- /**- - |
-
54 | - - -- - | -- - | - - - - -
-
- * @notice The pledgers of the winning side of a dispute have been paid- - |
-
55 | - - -- - | -- - | - - - - -
-
- *- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
57 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
58 | - - -- - | -- - | - - - - -
-
- * @param _winningPledgers The users who got paid for pledging for the winning side- - |
-
59 | - - -- - | -- - | - - - - -
-
- * @param _amountPerPledger The amount of GRT paid to each of the winning pledgers- - |
-
60 | - - -- - | -- - | - - - - -
-
- */- - |
-
61 | - - -- - | -- - | - - - - -
-
- event WinningPledgersPaid(- - |
-
62 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId,- - |
-
63 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _disputeId,- - |
-
64 | - - -- - | -- - | - - - - -
-
- address[] indexed _winningPledgers,- - |
-
65 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger- - |
-
66 | - - -- - | -- - | - - - - -
-
- );- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- /**- - |
-
69 | - - -- - | -- - | - - - - -
-
- * @notice A bond escalation has been settled- - |
-
70 | - - -- - | -- - | - - - - -
-
- *- - |
-
71 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
72 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
73 | - - -- - | -- - | - - - - -
-
- * @param _amountPerPledger The amount of GRT to be paid for each winning pledgers- - |
-
74 | - - -- - | -- - | - - - - -
-
- * @param _winningPledgersLength The number of winning pledgers- - |
-
75 | - - -- - | -- - | - - - - -
-
- */- - |
-
76 | - - -- - | -- - | - - - - -
-
- event BondEscalationSettled(- - |
-
77 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId, bytes32 _disputeId, uint256 _amountPerPledger, uint256 _winningPledgersLength- - |
-
78 | - - -- - | -- - | - - - - -
-
- );- - |
-
79 | - - -- - | -- - | - - - - -- - - - | -
80 | - - -- - | -- - | - - - - -
-
- /**- - |
-
81 | - - -- - | -- - | - - - - -
-
- * @notice A user claimed their reward for pledging for the winning side of a dispute- - |
-
82 | - - -- - | -- - | - - - - -
-
- *- - |
-
83 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the bond-escalated request- - |
-
84 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
85 | - - -- - | -- - | - - - - -
-
- * @param _pledger The user who claimed their reward- - |
-
86 | - - -- - | -- - | - - - - -
-
- * @param _reward The amount of GRT the user claimed- - |
-
87 | - - -- - | -- - | - - - - -
-
- * @param _released The amount of GRT released to the user- - |
-
88 | - - -- - | -- - | - - - - -
-
- */- - |
-
89 | - - -- - | -- - | - - - - -
-
- event EscalationRewardClaimed(- - |
-
90 | - - -- - | -- - | - - - - -
-
- bytes32 indexed _requestId, bytes32 indexed _disputeId, address indexed _pledger, uint256 _reward, uint256 _released- - |
-
91 | - - -- - | -- - | - - - - -
-
- );- - |
-
92 | - - -- - | -- - | - - - - -- - - - | -
93 | - - -- - | -- - | - - - - -
-
- /**- - |
-
94 | - - -- - | -- - | - - - - -
-
- * @notice Emitted when max users to check is set- - |
-
95 | - - -- - | -- - | - - - - -
-
- *- - |
-
96 | - - -- - | -- - | - - - - -
-
- * @param _maxUsersToCheck The new value of max users to check- - |
-
97 | - - -- - | -- - | - - - - -
-
- */- - |
-
98 | - - -- - | -- - | - - - - -
-
- event MaxUsersToCheckSet(uint256 _maxUsersToCheck);- - |
-
99 | - - -- - | -- - | - - - - -- - - - | -
100 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
101 | - - -- - | -- - | - - - - -
-
- ERRORS- - |
-
102 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
103 | - - -- - | -- - | - - - - -- - - - | -
104 | - - -- - | -- - | - - - - -
-
- /**- - |
-
105 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when depositing tokens with a fee on transfer- - |
-
106 | - - -- - | -- - | - - - - -
-
- */- - |
-
107 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_FeeOnTransferToken();- - |
-
108 | - - -- - | -- - | - - - - -- - - - | -
109 | - - -- - | -- - | - - - - -
-
- /**- - |
-
110 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the module bonding user tokens hasn't been approved by the user.- - |
-
111 | - - -- - | -- - | - - - - -
-
- */- - |
-
112 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_NotAllowed();- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- /**- - |
-
115 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when an `onlyAllowedModule` function is called by something- - |
-
116 | - - -- - | -- - | - - - - -
-
- * else than a module being used in the corresponding request- - |
-
117 | - - -- - | -- - | - - - - -
-
- */- - |
-
118 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_UnauthorizedModule();- - |
-
119 | - - -- - | -- - | - - - - -- - - - | -
120 | - - -- - | -- - | - - - - -
-
- /**- - |
-
121 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when an `onlyParticipant` function is called with an address- - |
-
122 | - - -- - | -- - | - - - - -
-
- * that is not part of the request.- - |
-
123 | - - -- - | -- - | - - - - -
-
- */- - |
-
124 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_UnauthorizedUser();- - |
-
125 | - - -- - | -- - | - - - - -- - - - | -
126 | - - -- - | -- - | - - - - -
-
- /**- - |
-
127 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the thawing period is invalid- - |
-
128 | - - -- - | -- - | - - - - -
-
- */- - |
-
129 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_InvalidThawingPeriod();- - |
-
130 | - - -- - | -- - | - - - - -- - - - | -
131 | - - -- - | -- - | - - - - -
-
- /**- - |
-
132 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user has insufficient tokens- - |
-
133 | - - -- - | -- - | - - - - -
-
- */- - |
-
134 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_InsufficientTokens();- - |
-
135 | - - -- - | -- - | - - - - -- - - - | -
136 | - - -- - | -- - | - - - - -
-
- /**- - |
-
137 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user has insufficient bonded tokens- - |
-
138 | - - -- - | -- - | - - - - -
-
- */- - |
-
139 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_InsufficientBondedTokens();- - |
-
140 | - - -- - | -- - | - - - - -- - - - | -
141 | - - -- - | -- - | - - - - -
-
- /**- - |
-
142 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user tries to claim their pledge for an escalation that was already claimed- - |
-
143 | - - -- - | -- - | - - - - -
-
- */- - |
-
144 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_AlreadyClaimed();- - |
-
145 | - - -- - | -- - | - - - - -- - - - | -
146 | - - -- - | -- - | - - - - -
-
- /**- - |
-
147 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user tries to claim their pledge for an escalation that wasn't finished yet- - |
-
148 | - - -- - | -- - | - - - - -
-
- */- - |
-
149 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_NoEscalationResult();- - |
-
150 | - - -- - | -- - | - - - - -- - - - | -
151 | - - -- - | -- - | - - - - -
-
- /**- - |
-
152 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the user doesn't have enough funds to pledge- - |
-
153 | - - -- - | -- - | - - - - -
-
- */- - |
-
154 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_InsufficientFunds();- - |
-
155 | - - -- - | -- - | - - - - -- - - - | -
156 | - - -- - | -- - | - - - - -
-
- /**- - |
-
157 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when trying to settle an already settled escalation- - |
-
158 | - - -- - | -- - | - - - - -
-
- */- - |
-
159 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_AlreadySettled();- - |
-
160 | - - -- - | -- - | - - - - -- - - - | -
161 | - - -- - | -- - | - - - - -
-
- /**- - |
-
162 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when the max verifier cut is invalid- - |
-
163 | - - -- - | -- - | - - - - -
-
- */- - |
-
164 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_InvalidMaxVerifierCut();- - |
-
165 | - - -- - | -- - | - - - - -- - - - | -
166 | - - -- - | -- - | - - - - -
-
- /**- - |
-
167 | - - -- - | -- - | - - - - -
-
- * @notice Thrown when caller is not authorized- - |
-
168 | - - -- - | -- - | - - - - -
-
- */- - |
-
169 | - - -- - | -- - | - - - - -
-
- error HorizonAccountingExtension_UnauthorizedCaller();- - |
-
170 | - - -- - | -- - | - - - - -- - - - | -
171 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
172 | - - -- - | -- - | - - - - -
-
- STRUCTS- - |
-
173 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
174 | - - -- - | -- - | - - - - -- - - - | -
175 | - - -- - | -- - | - - - - -
-
- /**- - |
-
176 | - - -- - | -- - | - - - - -
-
- * @notice Contains the data of the result of an escalation. Is used by users to claim their pledges- - |
-
177 | - - -- - | -- - | - - - - -
-
- * @param requestId The ID of the bond-escalated request- - |
-
178 | - - -- - | -- - | - - - - -
-
- * @param amountPerPledger The amount of token paid to each of the winning pledgers- - |
-
179 | - - -- - | -- - | - - - - -
-
- * @param bondSize The size of the bond required for bond escalation- - |
-
180 | - - -- - | -- - | - - - - -
-
- * @param bondEscalationModule The address of the bond escalation module that was used- - |
-
181 | - - -- - | -- - | - - - - -
-
- */- - |
-
182 | - - -- - | -- - | - - - - -
-
- struct EscalationResult {- - |
-
183 | - - -- - | -- - | - - - - -
-
- bytes32 requestId;- - |
-
184 | - - -- - | -- - | - - - - -
-
- uint256 amountPerPledger;- - |
-
185 | - - -- - | -- - | - - - - -
-
- uint256 bondSize;- - |
-
186 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule bondEscalationModule;- - |
-
187 | - - -- - | -- - | - - - - -
-
- }- - |
-
188 | - - -- - | -- - | - - - - -- - - - | -
189 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
190 | - - -- - | -- - | - - - - -
-
- VARIABLES- - |
-
191 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
192 | - - -- - | -- - | - - - - -- - - - | -
193 | - - -- - | -- - | - - - - -
-
- /**- - |
-
194 | - - -- - | -- - | - - - - -
-
- * @notice The Horizon Staking contract- - |
-
195 | - - -- - | -- - | - - - - -
-
- * @return _horizonStaking The Horizon Staking contract- - |
-
196 | - - -- - | -- - | - - - - -
-
- */- - |
-
197 | - - -- - | -- - | - - - - -
-
- function HORIZON_STAKING() external view returns (IHorizonStaking _horizonStaking);- - |
-
198 | - - -- - | -- - | - - - - -- - - - | -
199 | - - -- - | -- - | - - - - -
-
- /**- - |
-
200 | - - -- - | -- - | - - - - -
-
- * @notice The GRT token- - |
-
201 | - - -- - | -- - | - - - - -
-
- * @return _GRT The GRT token- - |
-
202 | - - -- - | -- - | - - - - -
-
- */- - |
-
203 | - - -- - | -- - | - - - - -
-
- function GRT() external view returns (IERC20 _GRT);- - |
-
204 | - - -- - | -- - | - - - - -- - - - | -
205 | - - -- - | -- - | - - - - -
-
- /**- - |
-
206 | - - -- - | -- - | - - - - -
-
- * @notice The Arbitrable contract- - |
-
207 | - - -- - | -- - | - - - - -
-
- * @return _arbitrable The Arbitrable contract- - |
-
208 | - - -- - | -- - | - - - - -
-
- */- - |
-
209 | - - -- - | -- - | - - - - -
-
- function ARBITRABLE() external view returns (IArbitrable _arbitrable);- - |
-
210 | - - -- - | -- - | - - - - -- - - - | -
211 | - - -- - | -- - | - - - - -
-
- /**- - |
-
212 | - - -- - | -- - | - - - - -
-
- * @notice The minimum thawing period- - |
-
213 | - - -- - | -- - | - - - - -
-
- * @return _MIN_THAWING_PERIOD The minimum thawing period- - |
-
214 | - - -- - | -- - | - - - - -
-
- */- - |
-
215 | - - -- - | -- - | - - - - -
-
- function MIN_THAWING_PERIOD() external view returns (uint64 _MIN_THAWING_PERIOD);- - |
-
216 | - - -- - | -- - | - - - - -- - - - | -
217 | - - -- - | -- - | - - - - -
-
- /**- - |
-
218 | - - -- - | -- - | - - - - -
-
- * @notice The maximum verifier cut- - |
-
219 | - - -- - | -- - | - - - - -
-
- * @return _MAX_VERIFIER_CUT The maximum verifier cut- - |
-
220 | - - -- - | -- - | - - - - -
-
- */- - |
-
221 | - - -- - | -- - | - - - - -
-
- function MAX_VERIFIER_CUT() external view returns (uint32 _MAX_VERIFIER_CUT);- - |
-
222 | - - -- - | -- - | - - - - -- - - - | -
223 | - - -- - | -- - | - - - - -
-
- /**- - |
-
224 | - - -- - | -- - | - - - - -
-
- * @notice The max number of users to slash- - |
-
225 | - - -- - | -- - | - - - - -
-
- * @return _MAX_USERS_TO_SLASH The number of users to slash- - |
-
226 | - - -- - | -- - | - - - - -
-
- */- - |
-
227 | - - -- - | -- - | - - - - -
-
- function MAX_USERS_TO_SLASH() external view returns (uint32 _MAX_USERS_TO_SLASH);- - |
-
228 | - - -- - | -- - | - - - - -- - - - | -
229 | - - -- - | -- - | - - - - -
-
- /**- - |
-
230 | - - -- - | -- - | - - - - -
-
- * @notice The maximum users to check- - |
-
231 | - - -- - | -- - | - - - - -
-
- * @return _maxUsersToCheck The maximum users to check- - |
-
232 | - - -- - | -- - | - - - - -
-
- */- - |
-
233 | - - -- - | -- - | - - - - -
-
- function maxUsersToCheck() external view returns (uint128 _maxUsersToCheck);- - |
-
234 | - - -- - | -- - | - - - - -- - - - | -
235 | - - -- - | -- - | - - - - -
-
- /**- - |
-
236 | - - -- - | -- - | - - - - -
-
- * @notice The total bonded tokens for a user- - |
-
237 | - - -- - | -- - | - - - - -
-
- * @param _user The user address- - |
-
238 | - - -- - | -- - | - - - - -
-
- * @return _totalBonded The total bonded tokens for a user- - |
-
239 | - - -- - | -- - | - - - - -
-
- */- - |
-
240 | - - -- - | -- - | - - - - -
-
- function totalBonded(address _user) external view returns (uint256 _totalBonded);- - |
-
241 | - - -- - | -- - | - - - - -- - - - | -
242 | - - -- - | -- - | - - - - -
-
- /**- - |
-
243 | - - -- - | -- - | - - - - -
-
- * @notice The bound amount of tokens for a user in a request- - |
-
244 | - - -- - | -- - | - - - - -
-
- * @param _user The user address- - |
-
245 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
246 | - - -- - | -- - | - - - - -
-
- * @return _amount The amount of tokens bonded- - |
-
247 | - - -- - | -- - | - - - - -
-
- */- - |
-
248 | - - -- - | -- - | - - - - -
-
- function bondedForRequest(address _user, bytes32 _requestId) external view returns (uint256 _amount);- - |
-
249 | - - -- - | -- - | - - - - -- - - - | -
250 | - - -- - | -- - | - - - - -
-
- /**- - |
-
251 | - - -- - | -- - | - - - - -
-
- * @notice The total pledged tokens for a user- - |
-
252 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
253 | - - -- - | -- - | - - - - -
-
- * @return _amount The total pledged tokens for a user- - |
-
254 | - - -- - | -- - | - - - - -
-
- */- - |
-
255 | - - -- - | -- - | - - - - -
-
- function pledges(bytes32 _disputeId) external view returns (uint256 _amount);- - |
-
256 | - - -- - | -- - | - - - - -- - - - | -
257 | - - -- - | -- - | - - - - -
-
- /**- - |
-
258 | - - -- - | -- - | - - - - -
-
- * @notice The escalation result of a dispute- - |
-
259 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
260 | - - -- - | -- - | - - - - -
-
- * @return _requestId The ID of the request- - |
-
261 | - - -- - | -- - | - - - - -
-
- * @return _amountPerPledger The amount of token paid to each of the winning pledgers- - |
-
262 | - - -- - | -- - | - - - - -
-
- * @return _bondSize The size of the bond required for bond escalation- - |
-
263 | - - -- - | -- - | - - - - -
-
- * @return _bondEscalationModule The address of the bond escalation module that was used- - |
-
264 | - - -- - | -- - | - - - - -
-
- */- - |
-
265 | - - -- - | -- - | - - - - -
-
- function escalationResults(bytes32 _disputeId)- - |
-
266 | - - -- - | -- - | - - - - -
-
- external- - |
-
267 | - - -- - | -- - | - - - - -
-
- view- - |
-
268 | - - -- - | -- - | - - - - -
-
- returns (- - |
-
269 | - - -- - | -- - | - - - - -
-
- bytes32 _requestId,- - |
-
270 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger,- - |
-
271 | - - -- - | -- - | - - - - -
-
- uint256 _bondSize,- - |
-
272 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule _bondEscalationModule- - |
-
273 | - - -- - | -- - | - - - - -
-
- );- - |
-
274 | - - -- - | -- - | - - - - -- - - - | -
275 | - - -- - | -- - | - - - - -
-
- /**- - |
-
276 | - - -- - | -- - | - - - - -
-
- * @notice The escalation result of a dispute- - |
-
277 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
278 | - - -- - | -- - | - - - - -
-
- * @return _escalationResult The escalation result- - |
-
279 | - - -- - | -- - | - - - - -
-
- */- - |
-
280 | - - -- - | -- - | - - - - -
-
- function getEscalationResult(bytes32 _disputeId) external view returns (EscalationResult memory _escalationResult);- - |
-
281 | - - -- - | -- - | - - - - -- - - - | -
282 | - - -- - | -- - | - - - - -
-
- /**- - |
-
283 | - - -- - | -- - | - - - - -
-
- * @notice The claim status of a user for a pledge- - |
-
284 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request- - |
-
285 | - - -- - | -- - | - - - - -
-
- * @param _pledger The user address- - |
-
286 | - - -- - | -- - | - - - - -
-
- * @return _claimed True if the user claimed their pledge- - |
-
287 | - - -- - | -- - | - - - - -
-
- */- - |
-
288 | - - -- - | -- - | - - - - -
-
- function pledgerClaimed(bytes32 _requestId, address _pledger) external view returns (bool _claimed);- - |
-
289 | - - -- - | -- - | - - - - -- - - - | -
290 | - - -- - | -- - | - - - - -
-
- /**- - |
-
291 | - - -- - | -- - | - - - - -
-
- * @notice Checks whether an address is an authorized caller- - |
-
292 | - - -- - | -- - | - - - - -
-
- *- - |
-
293 | - - -- - | -- - | - - - - -
-
- * @param _caller The address to check- - |
-
294 | - - -- - | -- - | - - - - -
-
- * @return _authorized True if the address is authorized, false otherwise- - |
-
295 | - - -- - | -- - | - - - - -
-
- */- - |
-
296 | - - -- - | -- - | - - - - -
-
- function authorizedCallers(address _caller) external returns (bool _authorized);- - |
-
297 | - - -- - | -- - | - - - - -- - - - | -
298 | - - -- - | -- - | - - - - -
-
- /**- - |
-
299 | - - -- - | -- - | - - - - -
-
- * @notice Returns the approved modules for bonding tokens- - |
-
300 | - - -- - | -- - | - - - - -
-
- * @param _user The address of the user- - |
-
301 | - - -- - | -- - | - - - - -
-
- * @return _approvedModules The approved modules for bonding tokens- - |
-
302 | - - -- - | -- - | - - - - -
-
- */- - |
-
303 | - - -- - | -- - | - - - - -
-
- function approvedModules(address _user) external view returns (address[] memory _approvedModules);- - |
-
304 | - - -- - | -- - | - - - - -- - - - | -
305 | - - -- - | -- - | - - - - -
-
- /**- - |
-
306 | - - -- - | -- - | - - - - -
-
- * @notice Returns the available balance to claim for a specific dispute- - |
-
307 | - - -- - | -- - | - - - - -
-
- *- - |
-
308 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The id of the dispute to get the balance- - |
-
309 | - - -- - | -- - | - - - - -
-
- * @return _balance The balance of the dispute- - |
-
310 | - - -- - | -- - | - - - - -
-
- */- - |
-
311 | - - -- - | -- - | - - - - -
-
- function disputeBalance(bytes32 _disputeId) external returns (uint256 _balance);- - |
-
312 | - - -- - | -- - | - - - - -- - - - | -
313 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
314 | - - -- - | -- - | - - - - -
-
- LOGIC- - |
-
315 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
316 | - - -- - | -- - | - - - - -- - - - | -
317 | - - -- - | -- - | - - - - -
-
- /**- - |
-
318 | - - -- - | -- - | - - - - -
-
- * @notice Allows a user to approve a module for bonding tokens- - |
-
319 | - - -- - | -- - | - - - - -
-
- * @param _module The address of the module to be approved- - |
-
320 | - - -- - | -- - | - - - - -
-
- */- - |
-
321 | - - -- - | -- - | - - - - -
-
- function approveModule(address _module) external;- - |
-
322 | - - -- - | -- - | - - - - -- - - - | -
323 | - - -- - | -- - | - - - - -
-
- /**- - |
-
324 | - - -- - | -- - | - - - - -
-
- * @notice Allows a user to revoke a module's approval for bonding tokens- - |
-
325 | - - -- - | -- - | - - - - -
-
- * @param _module The address of the module to be revoked- - |
-
326 | - - -- - | -- - | - - - - -
-
- */- - |
-
327 | - - -- - | -- - | - - - - -
-
- function revokeModule(address _module) external;- - |
-
328 | - - -- - | -- - | - - - - -- - - - | -
329 | - - -- - | -- - | - - - - -
-
- /**- - |
-
330 | - - -- - | -- - | - - - - -
-
- * @notice Pledges the given amount of token to the provided dispute ID of the provided request ID- - |
-
331 | - - -- - | -- - | - - - - -
-
- * @param _pledger Address of the pledger- - |
-
332 | - - -- - | -- - | - - - - -
-
- * @param _request The bond-escalated request- - |
-
333 | - - -- - | -- - | - - - - -
-
- * @param _dispute The bond-escalated dispute- - |
-
334 | - - -- - | -- - | - - - - -
-
- * @param _token Address of the token being paid as a reward for winning the bond escalation- - |
-
335 | - - -- - | -- - | - - - - -
-
- * @param _amount Amount of GRT to pledge- - |
-
336 | - - -- - | -- - | - - - - -
-
- */- - |
-
337 | - - -- - | -- - | - - - - -
-
- function pledge(- - |
-
338 | - - -- - | -- - | - - - - -
-
- address _pledger,- - |
-
339 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
340 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
341 | - - -- - | -- - | - - - - -
-
- IERC20 _token,- - |
-
342 | - - -- - | -- - | - - - - -
-
- uint256 _amount- - |
-
343 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
344 | - - -- - | -- - | - - - - -- - - - | -
345 | - - -- - | -- - | - - - - -
-
- /**- - |
-
346 | - - -- - | -- - | - - - - -
-
- *- - |
-
347 | - - -- - | -- - | - - - - -
-
- * @notice Updates the accounting of the given dispute to reflect the result of the bond escalation- - |
-
348 | - - -- - | -- - | - - - - -
-
- * @param _request The bond-escalated request- - |
-
349 | - - -- - | -- - | - - - - -
-
- * @param _dispute The bond-escalated dispute- - |
-
350 | - - -- - | -- - | - - - - -
-
- * @param _token Address of the token being paid as a reward for winning the bond escalation- - |
-
351 | - - -- - | -- - | - - - - -
-
- * @param _amountPerPledger Amount of GRT to be rewarded to each of the winning pledgers- - |
-
352 | - - -- - | -- - | - - - - -
-
- * @param _winningPledgersLength Amount of pledges that won the dispute- - |
-
353 | - - -- - | -- - | - - - - -
-
- */- - |
-
354 | - - -- - | -- - | - - - - -
-
- function onSettleBondEscalation(- - |
-
355 | - - -- - | -- - | - - - - -
-
- IOracle.Request calldata _request,- - |
-
356 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute calldata _dispute,- - |
-
357 | - - -- - | -- - | - - - - -
-
- IERC20 _token,- - |
-
358 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger,- - |
-
359 | - - -- - | -- - | - - - - -
-
- uint256 _winningPledgersLength- - |
-
360 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
361 | - - -- - | -- - | - - - - -- - - - | -
362 | - - -- - | -- - | - - - - -
-
- /**- - |
-
363 | - - -- - | -- - | - - - - -
-
- * @notice Claims the reward for the pledger the given dispute- - |
-
364 | - - -- - | -- - | - - - - -
-
- * @dev After the established thawing period the losing pledgers can withdraw their stake from Horizon.- - |
-
365 | - - -- - | -- - | - - - - -
-
- * Rewards should be claimed before that period ends to ensure that funds are available.- - |
-
366 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the bond-escalated dispute- - |
-
367 | - - -- - | -- - | - - - - -
-
- * @param _pledger Address of the pledger to claim the rewards- - |
-
368 | - - -- - | -- - | - - - - -
-
- */- - |
-
369 | - - -- - | -- - | - - - - -
-
- function claimEscalationReward(bytes32 _disputeId, address _pledger) external;- - |
-
370 | - - -- - | -- - | - - - - -- - - - | -
371 | - - -- - | -- - | - - - - -
-
- /**- - |
-
372 | - - -- - | -- - | - - - - -
-
- * @notice Allows a allowed module to transfer bonded tokens from one user to another- - |
-
373 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request handling the user's tokens- - |
-
374 | - - -- - | -- - | - - - - -
-
- * @param _payer The address of the user paying the tokens- - |
-
375 | - - -- - | -- - | - - - - -
-
- * @param _receiver The address of the user receiving the tokens- - |
-
376 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being transferred- - |
-
377 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT being transferred- - |
-
378 | - - -- - | -- - | - - - - -
-
- */- - |
-
379 | - - -- - | -- - | - - - - -
-
- function pay(bytes32 _requestId, address _payer, address _receiver, IERC20 _token, uint256 _amount) external;- - |
-
380 | - - -- - | -- - | - - - - -- - - - | -
381 | - - -- - | -- - | - - - - -
-
- /**- - |
-
382 | - - -- - | -- - | - - - - -
-
- * @notice Allows an allowed module to bond a user's tokens for a request- - |
-
383 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user to bond tokens for- - |
-
384 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request the user is bonding for- - |
-
385 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being bonded- - |
-
386 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT to bond- - |
-
387 | - - -- - | -- - | - - - - -
-
- */- - |
-
388 | - - -- - | -- - | - - - - -
-
- function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;- - |
-
389 | - - -- - | -- - | - - - - -- - - - | -
390 | - - -- - | -- - | - - - - -
-
- /**- - |
-
391 | - - -- - | -- - | - - - - -
-
- * @notice Allows a valid module to bond a user's tokens for a request- - |
-
392 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user to bond tokens for- - |
-
393 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request the user is bonding for- - |
-
394 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being bonded- - |
-
395 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT to bond- - |
-
396 | - - -- - | -- - | - - - - -
-
- * @param _sender The address starting the propose call on the Oracle- - |
-
397 | - - -- - | -- - | - - - - -
-
- */- - |
-
398 | - - -- - | -- - | - - - - -
-
- function bond(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount, address _sender) external;- - |
-
399 | - - -- - | -- - | - - - - -- - - - | -
400 | - - -- - | -- - | - - - - -
-
- /**- - |
-
401 | - - -- - | -- - | - - - - -
-
- * @notice Allows a valid module to release a user's tokens- - |
-
402 | - - -- - | -- - | - - - - -
-
- * @param _bonder The address of the user to release tokens for- - |
-
403 | - - -- - | -- - | - - - - -
-
- * @param _requestId The ID of the request where the tokens were bonded- - |
-
404 | - - -- - | -- - | - - - - -
-
- * @param _token The address of the token being released- - |
-
405 | - - -- - | -- - | - - - - -
-
- * @param _amount The amount of GRT to release- - |
-
406 | - - -- - | -- - | - - - - -
-
- */- - |
-
407 | - - -- - | -- - | - - - - -
-
- function release(address _bonder, bytes32 _requestId, IERC20 _token, uint256 _amount) external;- - |
-
408 | - - -- - | -- - | - - - - -- - - - | -
409 | - - -- - | -- - | - - - - -
-
- /**- - |
-
410 | - - -- - | -- - | - - - - -
-
- * @notice Allows a anyone to slash a number of users for a dispute- - |
-
411 | - - -- - | -- - | - - - - -
-
- * @dev After the established thawing period the losing pledgers can withdraw their stake from Horizon.- - |
-
412 | - - -- - | -- - | - - - - -
-
- * Users should be slashed before that period ends to ensure that funds are available.- - |
-
413 | - - -- - | -- - | - - - - -
-
- * @param _disputeId The ID of the dispute- - |
-
414 | - - -- - | -- - | - - - - -
-
- * @param _usersToSlash The number of users to slash- - |
-
415 | - - -- - | -- - | - - - - -
-
- * @param _maxUsersToCheck The maximum number of users to check before finishing the slashing- - |
-
416 | - - -- - | -- - | - - - - -
-
- */- - |
-
417 | - - -- - | -- - | - - - - -
-
- function slash(bytes32 _disputeId, uint256 _usersToSlash, uint256 _maxUsersToCheck) external;- - |
-
418 | - - -- - | -- - | - - - - -- - - - | -
419 | - - -- - | -- - | - - - - -
-
- /**- - |
-
420 | - - -- - | -- - | - - - - -
-
- * @notice Sets the maximum users to check- - |
-
421 | - - -- - | -- - | - - - - -
-
- * @param _maxUsersToCheck The new value of max users to check- - |
-
422 | - - -- - | -- - | - - - - -
-
- */- - |
-
423 | - - -- - | -- - | - - - - -
-
- function setMaxUsersToCheck(uint128 _maxUsersToCheck) external;- - |
-
424 | - - -- - | -- - | - - - - -
-
- }- - |
-
425 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- interface IEpochManager {- - |
-
5 | - - -- - | -- - | - - - - -
-
- /*///////////////////////////////////////////////////////////////- - |
-
6 | - - -- - | -- - | - - - - -
-
- FUNCTIONS- - |
-
7 | - - -- - | -- - | - - - - -
-
- //////////////////////////////////////////////////////////////*/- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- function currentEpoch() external view returns (uint256 _currentEpoch);- - |
-
10 | - - -- - | -- - | - - - - -
-
- }- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: GPL-3.0- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- interface IHorizonStaking {- - |
-
5 | - - -- - | -- - | - - - - -
-
- /**- - |
-
6 | - - -- - | -- - | - - - - -
-
- * @notice Gets the details of a provision.- - |
-
7 | - - -- - | -- - | - - - - -
-
- * @param serviceProvider The address of the service provider.- - |
-
8 | - - -- - | -- - | - - - - -
-
- * @param verifier The address of the verifier.- - |
-
9 | - - -- - | -- - | - - - - -
-
- * @return The provision details.- - |
-
10 | - - -- - | -- - | - - - - -
-
- */- - |
-
11 | - - -- - | -- - | - - - - -
-
- function getProvision(address serviceProvider, address verifier) external view returns (Provision memory);- - |
-
12 | - - -- - | -- - | - - - - -- - - - | -
13 | - - -- - | -- - | - - - - -
-
- /**- - |
-
14 | - - -- - | -- - | - - - - -
-
- * @notice Deposit tokens on the staking contract.- - |
-
15 | - - -- - | -- - | - - - - -
-
- * @dev Pulls tokens from the caller.- - |
-
16 | - - -- - | -- - | - - - - -
-
- *- - |
-
17 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
18 | - - -- - | -- - | - - - - -
-
- * - `_tokens` cannot be zero.- - |
-
19 | - - -- - | -- - | - - - - -
-
- * - Caller must have previously approved this contract to pull tokens from their balance.- - |
-
20 | - - -- - | -- - | - - - - -
-
- *- - |
-
21 | - - -- - | -- - | - - - - -
-
- * Emits a {StakeDeposited} event.- - |
-
22 | - - -- - | -- - | - - - - -
-
- *- - |
-
23 | - - -- - | -- - | - - - - -
-
- * @param tokens Amount of tokens to stake- - |
-
24 | - - -- - | -- - | - - - - -
-
- */- - |
-
25 | - - -- - | -- - | - - - - -
-
- function stake(uint256 tokens) external;- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- /**- - |
-
28 | - - -- - | -- - | - - - - -
-
- * @notice Provision stake to a verifier. The tokens will be locked with a thawing period- - |
-
29 | - - -- - | -- - | - - - - -
-
- * and will be slashable by the verifier. This is the main mechanism to provision stake to a data- - |
-
30 | - - -- - | -- - | - - - - -
-
- * service, where the data service is the verifier.- - |
-
31 | - - -- - | -- - | - - - - -
-
- * This function can be called by the service provider or by an operator authorized by the provider- - |
-
32 | - - -- - | -- - | - - - - -
-
- * for this specific verifier.- - |
-
33 | - - -- - | -- - | - - - - -
-
- * @dev Requirements:- - |
-
34 | - - -- - | -- - | - - - - -
-
- * - `tokens` cannot be zero and must be over the data service minimum required.- - |
-
35 | - - -- - | -- - | - - - - -
-
- * - Provision parameters must be within the range allowed by the verifier (`maxVerifierCut` and `thawingPeriod`)- - |
-
36 | - - -- - | -- - | - - - - -
-
- * - The `serviceProvider` must have enough idle stake to cover the tokens to provision.- - |
-
37 | - - -- - | -- - | - - - - -
-
- *- - |
-
38 | - - -- - | -- - | - - - - -
-
- * Emits a {ProvisionCreated} event.- - |
-
39 | - - -- - | -- - | - - - - -
-
- *- - |
-
40 | - - -- - | -- - | - - - - -
-
- * @param serviceProvider The service provider address- - |
-
41 | - - -- - | -- - | - - - - -
-
- * @param verifier The verifier address for which the tokens are provisioned (who will be able to slash the tokens)- - |
-
42 | - - -- - | -- - | - - - - -
-
- * @param tokens The amount of tokens that will be locked and slashable- - |
-
43 | - - -- - | -- - | - - - - -
-
- * @param maxVerifierCut The maximum cut, expressed in PPM, that a verifier can transfer instead of burning when slashing- - |
-
44 | - - -- - | -- - | - - - - -
-
- * @param thawingPeriod The period in seconds that the tokens will be thawing before they can be removed from the provision- - |
-
45 | - - -- - | -- - | - - - - -
-
- */- - |
-
46 | - - -- - | -- - | - - - - -
-
- function provision(- - |
-
47 | - - -- - | -- - | - - - - -
-
- address serviceProvider,- - |
-
48 | - - -- - | -- - | - - - - -
-
- address verifier,- - |
-
49 | - - -- - | -- - | - - - - -
-
- uint256 tokens,- - |
-
50 | - - -- - | -- - | - - - - -
-
- uint32 maxVerifierCut,- - |
-
51 | - - -- - | -- - | - - - - -
-
- uint64 thawingPeriod- - |
-
52 | - - -- - | -- - | - - - - -
-
- ) external;- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- /**- - |
-
55 | - - -- - | -- - | - - - - -
-
- * @notice Adds tokens from the service provider's idle stake to a provision- - |
-
56 | - - -- - | -- - | - - - - -
-
- * @dev- - |
-
57 | - - -- - | -- - | - - - - -
-
- *- - |
-
58 | - - -- - | -- - | - - - - -
-
- * Requirements:- - |
-
59 | - - -- - | -- - | - - - - -
-
- * - The `serviceProvider` must have previously provisioned stake to `verifier`.- - |
-
60 | - - -- - | -- - | - - - - -
-
- * - `tokens` cannot be zero.- - |
-
61 | - - -- - | -- - | - - - - -
-
- * - The `serviceProvider` must have enough idle stake to cover the tokens to add.- - |
-
62 | - - -- - | -- - | - - - - -
-
- *- - |
-
63 | - - -- - | -- - | - - - - -
-
- * Emits a {ProvisionIncreased} event.- - |
-
64 | - - -- - | -- - | - - - - -
-
- *- - |
-
65 | - - -- - | -- - | - - - - -
-
- * @param serviceProvider The service provider address- - |
-
66 | - - -- - | -- - | - - - - -
-
- * @param verifier The verifier address- - |
-
67 | - - -- - | -- - | - - - - -
-
- * @param tokens The amount of tokens to add to the provision- - |
-
68 | - - -- - | -- - | - - - - -
-
- */- - |
-
69 | - - -- - | -- - | - - - - -
-
- function addToProvision(address serviceProvider, address verifier, uint256 tokens) external;- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- struct Provision {- - |
-
72 | - - -- - | -- - | - - - - -
-
- // Service provider tokens in the provision (does not include delegated tokens)- - |
-
73 | - - -- - | -- - | - - - - -
-
- uint256 tokens;- - |
-
74 | - - -- - | -- - | - - - - -
-
- // Service provider tokens that are being thawed (and will stop being slashable soon)- - |
-
75 | - - -- - | -- - | - - - - -
-
- uint256 tokensThawing;- - |
-
76 | - - -- - | -- - | - - - - -
-
- // Shares representing the thawing tokens- - |
-
77 | - - -- - | -- - | - - - - -
-
- uint256 sharesThawing;- - |
-
78 | - - -- - | -- - | - - - - -
-
- // Max amount that can be taken by the verifier when slashing, expressed in parts-per-million of the amount slashed- - |
-
79 | - - -- - | -- - | - - - - -
-
- uint32 maxVerifierCut;- - |
-
80 | - - -- - | -- - | - - - - -
-
- // Time, in seconds, tokens must thaw before being withdrawn- - |
-
81 | - - -- - | -- - | - - - - -
-
- uint64 thawingPeriod;- - |
-
82 | - - -- - | -- - | - - - - -
-
- // Timestamp when the provision was created- - |
-
83 | - - -- - | -- - | - - - - -
-
- uint64 createdAt;- - |
-
84 | - - -- - | -- - | - - - - -
-
- // Pending value for `maxVerifierCut`. Verifier needs to accept it before it becomes active.- - |
-
85 | - - -- - | -- - | - - - - -
-
- uint32 maxVerifierCutPending;- - |
-
86 | - - -- - | -- - | - - - - -
-
- // Pending value for `thawingPeriod`. Verifier needs to accept it before it becomes active.- - |
-
87 | - - -- - | -- - | - - - - -
-
- uint64 thawingPeriodPending;- - |
-
88 | - - -- - | -- - | - - - - -
-
- }- - |
-
89 | - - -- - | -- - | - - - - -- - - - | -
90 | - - -- - | -- - | - - - - -
-
- /**- - |
-
91 | - - -- - | -- - | - - - - -
-
- * @notice Start thawing tokens to remove them from a provision.- - |
-
92 | - - -- - | -- - | - - - - -
-
- * This function can be called by the service provider or by an operator authorized by the provider- - |
-
93 | - - -- - | -- - | - - - - -
-
- * for this specific verifier.- - |
-
94 | - - -- - | -- - | - - - - -
-
- *- - |
-
95 | - - -- - | -- - | - - - - -
-
- * Note that removing tokens from a provision is a two step process:- - |
-
96 | - - -- - | -- - | - - - - -
-
- * - First the tokens are thawed using this function.- - |
-
97 | - - -- - | -- - | - - - - -
-
- * - Then after the thawing period, the tokens are removed from the provision using {deprovision}- - |
-
98 | - - -- - | -- - | - - - - -
-
- * or {reprovision}.- - |
-
99 | - - -- - | -- - | - - - - -
-
- *- - |
-
100 | - - -- - | -- - | - - - - -
-
- * @dev Requirements:- - |
-
101 | - - -- - | -- - | - - - - -
-
- * - The provision must have enough tokens available to thaw.- - |
-
102 | - - -- - | -- - | - - - - -
-
- * - `tokens` cannot be zero.- - |
-
103 | - - -- - | -- - | - - - - -
-
- *- - |
-
104 | - - -- - | -- - | - - - - -
-
- * Emits {ProvisionThawed} and {ThawRequestCreated} events.- - |
-
105 | - - -- - | -- - | - - - - -
-
- *- - |
-
106 | - - -- - | -- - | - - - - -
-
- * @param serviceProvider The service provider address- - |
-
107 | - - -- - | -- - | - - - - -
-
- * @param verifier The verifier address for which the tokens are provisioned- - |
-
108 | - - -- - | -- - | - - - - -
-
- * @param tokens The amount of tokens to thaw- - |
-
109 | - - -- - | -- - | - - - - -
-
- * @return The ID of the thaw request- - |
-
110 | - - -- - | -- - | - - - - -
-
- */- - |
-
111 | - - -- - | -- - | - - - - -
-
- function thaw(address serviceProvider, address verifier, uint256 tokens) external returns (bytes32);- - |
-
112 | - - -- - | -- - | - - - - -- - - - | -
113 | - - -- - | -- - | - - - - -
-
- /**- - |
-
114 | - - -- - | -- - | - - - - -
-
- * @notice Slash a service provider. This can only be called by a verifier to which- - |
-
115 | - - -- - | -- - | - - - - -
-
- * the provider has provisioned stake, and up to the amount of tokens they have provisioned.- - |
-
116 | - - -- - | -- - | - - - - -
-
- * If the service provider's stake is not enough, the associated delegation pool might be slashed- - |
-
117 | - - -- - | -- - | - - - - -
-
- * depending on the value of the global delegation slashing flag.- - |
-
118 | - - -- - | -- - | - - - - -
-
- *- - |
-
119 | - - -- - | -- - | - - - - -
-
- * Part of the slashed tokens are sent to the `verifierDestination` as a reward.- - |
-
120 | - - -- - | -- - | - - - - -
-
- *- - |
-
121 | - - -- - | -- - | - - - - -
-
- * @dev Requirements:- - |
-
122 | - - -- - | -- - | - - - - -
-
- * - `tokens` must be less than or equal to the amount of tokens provisioned by the service provider.- - |
-
123 | - - -- - | -- - | - - - - -
-
- * - `tokensVerifier` must be less than the provision's tokens times the provision's maximum verifier cut.- - |
-
124 | - - -- - | -- - | - - - - -
-
- *- - |
-
125 | - - -- - | -- - | - - - - -
-
- * Emits a {ProvisionSlashed} and {VerifierTokensSent} events.- - |
-
126 | - - -- - | -- - | - - - - -
-
- * Emits a {DelegationSlashed} or {DelegationSlashingSkipped} event depending on the global delegation slashing- - |
-
127 | - - -- - | -- - | - - - - -
-
- * flag.- - |
-
128 | - - -- - | -- - | - - - - -
-
- *- - |
-
129 | - - -- - | -- - | - - - - -
-
- * @param serviceProvider The service provider to slash- - |
-
130 | - - -- - | -- - | - - - - -
-
- * @param tokens The amount of tokens to slash- - |
-
131 | - - -- - | -- - | - - - - -
-
- * @param tokensVerifier The amount of tokens to transfer instead of burning- - |
-
132 | - - -- - | -- - | - - - - -
-
- * @param verifierDestination The address to transfer the verifier cut to- - |
-
133 | - - -- - | -- - | - - - - -
-
- */- - |
-
134 | - - -- - | -- - | - - - - -
-
- function slash(address serviceProvider, uint256 tokens, uint256 tokensVerifier, address verifierDestination) external;- - |
-
135 | - - -- - | -- - | - - - - -
-
- }- - |
-
136 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 1 (100.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {PropertyParent} from './properties/PropertyParent.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- contract FuzzTest is PropertyParent {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function test_debug() public {- - |
-
8 | - - -- - | -- - | - - - - -
-
- assert(true);- - |
-
9 | - - -- - | -- - | - - - - -
-
- }- - |
-
10 | - - -- - | -- - | - - - - -
-
- }- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -57 / 58 (98.3%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {ValidatorLib} from '@defi-wonderland/prophet-core/solidity/libraries/ValidatorLib.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {- - |
-
7 | - - -- - | -- - | - - - - -
-
- BondEscalationModule,- - |
-
8 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule- - |
-
9 | - - -- - | -- - | - - - - -
-
- } from '@defi-wonderland/prophet-modules/solidity/contracts/modules/dispute/BondEscalationModule.sol';- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- import {- - |
-
12 | - - -- - | -- - | - - - - -
-
- ArbitratorModule,- - |
-
13 | - - -- - | -- - | - - - - -
-
- IArbitratorModule- - |
-
14 | - - -- - | -- - | - - - - -
-
- } from '@defi-wonderland/prophet-modules/solidity/contracts/modules/resolution/ArbitratorModule.sol';- - |
-
15 | - - -- - | -- - | - - - - -
-
- import {- - |
-
16 | - - -- - | -- - | - - - - -
-
- BondedResponseModule,- - |
-
17 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule- - |
-
18 | - - -- - | -- - | - - - - -
-
- } from '@defi-wonderland/prophet-modules/solidity/contracts/modules/response/BondedResponseModule.sol';- - |
-
19 | - - -- - | -- - | - - - - -
-
- import {IArbitrator} from '@defi-wonderland/prophet-modules/solidity/interfaces/IArbitrator.sol';- - |
-
20 | - - -- - | -- - | - - - - -
-
- import {IAccountingExtension} from- - |
-
21 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IAccountingExtension.sol';- - |
-
22 | - - -- - | -- - | - - - - -
-
- import {IBondEscalationAccounting} from- - |
-
23 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/interfaces/extensions/IBondEscalationAccounting.sol';- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- import {IArbitrable, IArbitratorModule, ICouncilArbitrator, IOracle} from 'interfaces/ICouncilArbitrator.sol';- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- import {Utils} from './helpers/Utils.t.sol';- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- import {IEBOFinalityModule} from 'interfaces/IEBOFinalityModule.sol';- - |
-
30 | - - -- - | -- - | - - - - -
-
- import {IEBORequestModule} from 'interfaces/IEBORequestModule.sol';- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- import {IEpochManager} from 'interfaces/external/IEpochManager.sol';- - |
-
33 | - - -- - | -- - | - - - - -
-
- import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol';- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- import {FuzzERC20, IERC20} from './helpers/FuzzERC20.sol';- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- import {IOracle, Oracle} from '@defi-wonderland/prophet-core/solidity/contracts/Oracle.sol';- - |
-
38 | - - -- - | -- - | - - - - -- - - - | -
39 | - - -- - | -- - | - - - - -
-
- import {BondEscalationModule} from- - |
-
40 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/contracts/modules/dispute/BondEscalationModule.sol';- - |
-
41 | - - -- - | -- - | - - - - -
-
- import {BondedResponseModule} from- - |
-
42 | - - -- - | -- - | - - - - -
-
- '@defi-wonderland/prophet-modules/solidity/contracts/modules/response/BondedResponseModule.sol';- - |
-
43 | - - -- - | -- - | - - - - -- - - - | -
44 | - - -- - | -- - | - - - - -
-
- import {Arbitrable} from 'contracts/Arbitrable.sol';- - |
-
45 | - - -- - | -- - | - - - - -
-
- import {CouncilArbitrator} from 'contracts/CouncilArbitrator.sol';- - |
-
46 | - - -- - | -- - | - - - - -
-
- import {EBOFinalityModule} from 'contracts/EBOFinalityModule.sol';- - |
-
47 | - - -- - | -- - | - - - - -
-
- import {EBORequestCreator, IEBORequestCreator} from 'contracts/EBORequestCreator.sol';- - |
-
48 | - - -- - | -- - | - - - - -
-
- import {EBORequestModule} from 'contracts/EBORequestModule.sol';- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- import {HorizonAccountingExtension} from 'contracts/HorizonAccountingExtension.sol';- - |
-
51 | - - -- - | -- - | - - - - -- - - - | -
52 | - - -- - | -- - | - - - - -
-
- import {MockEpochManager} from './helpers/MockEpochManager.t.sol';- - |
-
53 | - - -- - | -- - | - - - - -
-
- import {MockHorizonStaking} from './helpers/MockHorizonStaking.t.sol';- - |
-
54 | - - -- - | -- - | - - - - -- - - - | -
55 | - - -- - | -- - | - - - - -
-
- contract Setup is Utils {- - |
-
56 | - - -- - | -- - | - - - - -
-
- // Core contracts- - |
-
57 | - - -- - | -- - | - - - - -
-
- Oracle internal oracle;- - |
-
58 | - - -- - | -- - | - - - - -
-
- EBORequestCreator internal eboRequestCreator;- - |
-
59 | - - -- - | -- - | - - - - -
-
- EBORequestModule internal eboRequestModule;- - |
-
60 | - - -- - | -- - | - - - - -
-
- BondedResponseModule internal bondedResponseModule;- - |
-
61 | - - -- - | -- - | - - - - -
-
- BondEscalationModule internal bondEscalationModule;- - |
-
62 | - - -- - | -- - | - - - - -
-
- CouncilArbitrator internal councilArbitrator;- - |
-
63 | - - -- - | -- - | - - - - -
-
- EBOFinalityModule internal eboFinalityModule;- - |
-
64 | - - -- - | -- - | - - - - -
-
- Arbitrable internal arbitrable;- - |
-
65 | - - -- - | -- - | - - - - -
-
- HorizonAccountingExtension internal horizonAccountingExtension;- - |
-
66 | - - -- - | -- - | - - - - -
-
- ArbitratorModule internal arbitratorModule;- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- // External contracts (mocked)- - |
-
69 | - - -- - | -- - | - - - - -
-
- IHorizonStaking internal horizonStaking;- - |
-
70 | - - -- - | -- - | - - - - -
-
- IERC20 internal GRT;- - |
-
71 | - - -- - | -- - | - - - - -
-
- IEpochManager internal epochManager;- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- // Constants- - |
-
74 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 internal constant START_EPOCH = 1000;- - |
-
75 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint64 internal constant MIN_THAWING_PERIOD = 1 days;- - |
-
76 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint128 internal constant INITIAL_MAX_USERS_TO_CHECK = 10;- - |
-
77 | - - -- - | -- - | - - - - -
-
- uint32 internal constant MAX_VERIFIER_CUT = 1_000_000;- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- uint256 internal constant PAYMENT_AMOUNT = 0 ether;- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant RESPONSE_BOND_SIZE = 0.5 ether;- - |
-
82 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant RESPONSE_DEADLINE = 5 days;- - |
-
83 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant RESPONSE_DISPUTE_WINDOW = 1 weeks;- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant DISPUTE_BOND_SIZE = 0.3 ether;- - |
-
86 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant MAX_NB_ESCALATION = 2;- - |
-
87 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant DISPUTE_DEADLINE = 10 days;- - |
-
88 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant TYING_BUFFER = 3 days;- - |
-
89 | - - -
-
- √
-
- |
- - - | - - - - -
-
- uint256 internal constant DISPUTE_DISPUTE_WINDOW = 2 weeks;- - |
-
90 | - - -- - | -- - | - - - - -- - - - | -
91 | - - -- - | -- - | - - - - -
-
- constructor() {- - |
-
92 | - - -- - | -- - | - - - - -
-
- // Deploy mock contracts- - |
-
93 | - - -
-
- √
-
- |
- - - | - - - - -
-
- GRT = IERC20(address(new FuzzERC20()));- - |
-
94 | - - -
-
- √
-
- |
- - - | - - - - -
-
- epochManager = IEpochManager(address(new MockEpochManager(START_EPOCH)));- - |
-
95 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonStaking = IHorizonStaking(address(new MockHorizonStaking(GRT)));- - |
-
96 | - - -- - | -- - | - - - - -- - - - | -
97 | - - -- - | -- - | - - - - -
-
- // Deploy core contracts- - |
-
98 | - - -
-
- √
-
- |
- - - | - - - - -
-
- arbitrable = new Arbitrable(- - |
-
99 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(this), // Initial arbitrator- - |
-
100 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(this) // Initial council- - |
-
101 | - - -- - | -- - | - - - - -
-
- );- - |
-
102 | - - -- - | -- - | - - - - -- - - - | -
103 | - - -
-
- √
-
- |
- - - | - - - - -
-
- oracle = new Oracle();- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestModule = new EBORequestModule(- - |
-
106 | - - -- - | -- - | - - - - -
-
- oracle,- - |
-
107 | - - -- - | -- - | - - - - -
-
- EBORequestCreator(address(0)), //eboRequestCreator will be set after creation- - |
-
108 | - - -
-
- √
-
- |
- - - | - - - - -
-
- arbitrable- - |
-
109 | - - -- - | -- - | - - - - -
-
- );- - |
-
110 | - - -- - | -- - | - - - - -- - - - | -
111 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bondedResponseModule = new BondedResponseModule(oracle);- - |
-
112 | - - -- - | -- - | - - - - -- - - - | -
113 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bondEscalationModule = new BondEscalationModule(oracle);- - |
-
114 | - - -- - | -- - | - - - - -- - - - | -
115 | - - -
-
- √
-
- |
- - - | - - - - -
-
- arbitratorModule = new ArbitratorModule(oracle);- - |
-
116 | - - -- - | -- - | - - - - -- - - - | -
117 | - - -
-
- √
-
- |
- - - | - - - - -
-
- councilArbitrator = new CouncilArbitrator(arbitratorModule, arbitrable);- - |
-
118 | - - -- - | -- - | - - - - -- - - - | -
119 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboFinalityModule = new EBOFinalityModule(- - |
-
120 | - - -
-
- √
-
- |
- - - | - - - - -
-
- oracle,- - |
-
121 | - - -- - | -- - | - - - - -
-
- EBORequestCreator(address(0)), // Will be set after creation- - |
-
122 | - - -
-
- √
-
- |
- - - | - - - - -
-
- arbitrable- - |
-
123 | - - -- - | -- - | - - - - -
-
- );- - |
-
124 | - - -- - | -- - | - - - - -- - - - | -
125 | - - -- - | -- - | - - - - -
-
- // Set up accounting extension- - |
-
126 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address[] memory authorizedCallers = new address[](1);- - |
-
127 | - - -
-
- √
-
- |
- - - | - - - - -
-
- authorizedCallers[0] = address(bondEscalationModule);- - |
-
128 | - - -- - | -- - | - - - - -- - - - | -
129 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonAccountingExtension = new HorizonAccountingExtension(- - |
-
130 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonStaking, oracle, GRT, arbitrable, MIN_THAWING_PERIOD, INITIAL_MAX_USERS_TO_CHECK, authorizedCallers- - |
-
131 | - - -- - | -- - | - - - - -
-
- );- - |
-
132 | - - -- - | -- - | - - - - -- - - - | -
133 | - - -- - | -- - | - - - - -
-
- // Create EBO request creator with initial parameters- - |
-
134 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory initialRequest = IOracle.Request({- - |
-
135 | - - -
-
- √
-
- |
- - - | - - - - -
-
- requestModule: address(eboRequestModule),- - |
-
136 | - - -
-
- √
-
- |
- - - | - - - - -
-
- responseModule: address(bondedResponseModule),- - |
-
137 | - - -
-
- √
-
- |
- - - | - - - - -
-
- disputeModule: address(bondEscalationModule),- - |
-
138 | - - -
-
- √
-
- |
- - - | - - - - -
-
- resolutionModule: address(arbitratorModule),- - |
-
139 | - - -
-
- √
-
- |
- - - | - - - - -
-
- finalityModule: address(eboFinalityModule),- - |
-
140 | - - -- - | -- - | - - - - -
-
- requester: address(0), // Will be set to eboRequestCreator's address- - |
-
141 | - - -- - | -- - | - - - - -
-
- requestModuleData: '',- - |
-
142 | - - -- - | -- - | - - - - -
-
- responseModuleData: '',- - |
-
143 | - - -- - | -- - | - - - - -
-
- disputeModuleData: '',- - |
-
144 | - - -- - | -- - | - - - - -
-
- resolutionModuleData: '',- - |
-
145 | - - -- - | -- - | - - - - -
-
- finalityModuleData: '',- - |
-
146 | - - -- - | -- - | - - - - -
-
- nonce: 0- - |
-
147 | - - -- - | -- - | - - - - -
-
- });- - |
-
148 | - - -- - | -- - | - - - - -- - - - | -
149 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator = new EBORequestCreator(oracle, epochManager, arbitrable, initialRequest);- - |
-
150 | - - -- - | -- - | - - - - -- - - - | -
151 | - - -- - | -- - | - - - - -
-
- // Initialize modules with eboRequestCreator- - |
-
152 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestModule.addEBORequestCreator(eboRequestCreator);- - |
-
153 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboFinalityModule.addEBORequestCreator(eboRequestCreator);- - |
-
154 | - - -- - | -- - | - - - - -- - - - | -
155 | - - -- - | -- - | - - - - -
-
- // Set up module permissions- - |
-
156 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonAccountingExtension.approveModule(address(bondedResponseModule));- - |
-
157 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonAccountingExtension.approveModule(address(bondEscalationModule));- - |
-
158 | - - -- - | -- - | - - - - -- - - - | -
159 | - - -- - | -- - | - - - - -
-
- // Set up initial chain IDs- - |
-
160 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.addChain('mainnet');- - |
-
161 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.addChain('optimism');- - |
-
162 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.addChain('arbitrum');- - |
-
163 | - - -- - | -- - | - - - - -- - - - | -
164 | - - -- - | -- - | - - - - -
-
- // Set up initial module parameters- - |
-
165 | - - -
-
- √
-
- |
- - - | - - - - -
-
- _setupModuleParameters();- - |
-
166 | - - -- - | -- - | - - - - -
-
- }- - |
-
167 | - - -- - | -- - | - - - - -- - - - | -
168 | - - -- - | -- - | - - - - -
-
- function _setupModuleParameters() internal {- - |
-
169 | - - -- - | -- - | - - - - -
-
- // Set up request module parameters- - |
-
170 | - - -
-
- √
-
- |
- - - | - - - - -
-
- IEBORequestModule.RequestParameters memory requestParams = IEBORequestModule.RequestParameters({- - |
-
171 | - - -- - | -- - | - - - - -
-
- epoch: START_EPOCH,- - |
-
172 | - - -- - | -- - | - - - - -
-
- chainId: 'mainnet',- - |
-
173 | - - -
-
- √
-
- |
- - - | - - - - -
-
- accountingExtension: IAccountingExtension(address(horizonAccountingExtension)),- - |
-
174 | - - -- - | -- - | - - - - -
-
- paymentAmount: PAYMENT_AMOUNT- - |
-
175 | - - -- - | -- - | - - - - -
-
- });- - |
-
176 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.setRequestModuleData(address(eboRequestModule), requestParams);- - |
-
177 | - - -- - | -- - | - - - - -- - - - | -
178 | - - -- - | -- - | - - - - -
-
- // Set up response module parameters- - |
-
179 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule.RequestParameters memory responseParams = IBondedResponseModule.RequestParameters({- - |
-
180 | - - -
-
- √
-
- |
- - - | - - - - -
-
- accountingExtension: IAccountingExtension(address(horizonAccountingExtension)),- - |
-
181 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bondToken: GRT,- - |
-
182 | - - -- - | -- - | - - - - -
-
- bondSize: RESPONSE_BOND_SIZE,- - |
-
183 | - - -- - | -- - | - - - - -
-
- deadline: RESPONSE_DEADLINE,- - |
-
184 | - - -- - | -- - | - - - - -
-
- disputeWindow: RESPONSE_DISPUTE_WINDOW- - |
-
185 | - - -- - | -- - | - - - - -
-
- });- - |
-
186 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.setResponseModuleData(address(bondedResponseModule), responseParams);- - |
-
187 | - - -- - | -- - | - - - - -- - - - | -
188 | - - -- - | -- - | - - - - -
-
- // Set up dispute module parameters- - |
-
189 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule.RequestParameters memory disputeParams = IBondEscalationModule.RequestParameters({- - |
-
190 | - - -
-
- √
-
- |
- - - | - - - - -
-
- accountingExtension: IBondEscalationAccounting(address(horizonAccountingExtension)),- - |
-
191 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bondToken: GRT,- - |
-
192 | - - -- - | -- - | - - - - -
-
- bondSize: DISPUTE_BOND_SIZE,- - |
-
193 | - - -- - | -- - | - - - - -
-
- maxNumberOfEscalations: MAX_NB_ESCALATION,- - |
-
194 | - - -- - | -- - | - - - - -
-
- bondEscalationDeadline: DISPUTE_DEADLINE,- - |
-
195 | - - -- - | -- - | - - - - -
-
- tyingBuffer: TYING_BUFFER,- - |
-
196 | - - -- - | -- - | - - - - -
-
- disputeWindow: DISPUTE_DISPUTE_WINDOW- - |
-
197 | - - -- - | -- - | - - - - -
-
- });- - |
-
198 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.setDisputeModuleData(address(bondEscalationModule), disputeParams);- - |
-
199 | - - -- - | -- - | - - - - -- - - - | -
200 | - - -- - | -- - | - - - - -
-
- // Set up resolution module parameters- - |
-
201 | - - -- - | -- - | - - - - -
-
- IArbitratorModule.RequestParameters memory resolutionParams =- - |
-
202 | - - -
-
- √
-
- |
- - - | - - - - -
-
- IArbitratorModule.RequestParameters({arbitrator: address(councilArbitrator)});- - |
-
203 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.setResolutionModuleData(address(arbitratorModule), resolutionParams);- - |
-
204 | - - -- - | -- - | - - - - -- - - - | -
205 | - - -- - | -- - | - - - - -
-
- // Set finality module- - |
-
206 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboRequestCreator.setFinalityModuleData(address(eboFinalityModule));- - |
-
207 | - - -- - | -- - | - - - - -
-
- }- - |
-
208 | - - -- - | -- - | - - - - -
-
- }- - |
-
209 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -7 / 20 (35.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import /*{} from*/ '../Setup.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {Actors} from '../helpers/Actors.t.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- // Base handler with tracking logic- - |
-
8 | - - -- - | -- - | - - - - -
-
- contract BaseHandler is Setup, Actors {- - |
-
9 | - - -- - | -- - | - - - - -
-
- // Track all created request IDs- - |
-
10 | - - -- - | -- - | - - - - -
-
- bytes32[] internal _ghost_requests;- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- // Track request details- - |
-
13 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => IOracle.Request) internal _ghost_requestData;- - |
-
14 | - - -- - | -- - | - - - - -- - - - | -
15 | - - -- - | -- - | - - - - -
-
- // Track responses for requests- - |
-
16 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => bytes32) internal _ghost_activeResponses; // requestId => responseId- - |
-
17 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => IOracle.Response) internal _ghost_responseData;- - |
-
18 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => bool) internal _ghost_finalizedResponses;- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- // Track disputes- - |
-
21 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => bytes32[]) internal _ghost_disputes; // requestId => disputeIds- - |
-
22 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => IOracle.Dispute) internal _ghost_disputeData;- - |
-
23 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => IOracle.DisputeStatus) internal _ghost_disputeStatuses;- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- // Track which requests came from EBORequestCreator- - |
-
26 | - - -- - | -- - | - - - - -
-
- mapping(bytes32 => bool) internal _ghost_validRequests;- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- // Track chain IDs used per epoch to prevent duplicates- - |
-
29 | - - -- - | -- - | - - - - -
-
- mapping(uint256 => mapping(string => bool)) internal _ghost_epochChainIds;- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- // Track bonds and pledges- - |
-
32 | - - -- - | -- - | - - - - -
-
- mapping(address => mapping(bytes32 => uint256)) internal _ghost_bonds;- - |
-
33 | - - -- - | -- - | - - - - -
-
- mapping(address => mapping(bytes32 => uint256)) internal _ghost_pledgesFor;- - |
-
34 | - - -- - | -- - | - - - - -
-
- mapping(address => mapping(bytes32 => uint256)) internal _ghost_pledgesAgainst;- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -- - | - - - - -
-
- // Helper functions- - |
-
37 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- function _boundEpoch(uint256 _epoch) internal view returns (uint256) {- - |
-
38 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- return bound(_epoch, START_EPOCH, START_EPOCH + 1000);- - |
-
39 | - - -- - | -- - | - - - - -
-
- }- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- function _boundAmount(uint256 _amount) internal pure returns (uint256) {- - |
-
42 | - - -- - | -- - | - - - - -
-
- return bound(_amount, 1, 1_000_000e18);- - |
-
43 | - - -- - | -- - | - - - - -
-
- }- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- function _boundBlockNumber(uint256 _blockNumber) internal view returns (uint256) {- - |
-
46 | - - -- - | -- - | - - - - -
-
- return bound(_blockNumber, block.number - 1000, block.number);- - |
-
47 | - - -- - | -- - | - - - - -
-
- }- - |
-
48 | - - -- - | -- - | - - - - -- - - - | -
49 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function _generateChainId(uint256 _seed) internal pure returns (string memory) {- - |
-
50 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- string[3] memory chains = ['mainnet', 'optimism', 'arbitrum'];- - |
-
51 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return chains[_seed % 3];- - |
-
52 | - - -- - | -- - | - - - - -
-
- }- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -
-
- √
-
- |
- - - | - - - - -
-
- function _getRandomRequest(uint256 _seed) internal view returns (bytes32) {- - |
-
55 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_ghost_requests.length == 0) return bytes32(0);- - |
-
56 | - - -- - | -- - | - - - - -
-
- return _ghost_requests[_seed % _ghost_requests.length];- - |
-
57 | - - -- - | -- - | - - - - -
-
- }- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- function _getRandomActiveResponse(bytes32 _requestId) internal view returns (IOracle.Response memory) {- - |
-
60 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = _ghost_activeResponses[_requestId];- - |
-
61 | - - -- - | -- - | - - - - -
-
- return _ghost_responseData[responseId];- - |
-
62 | - - -- - | -- - | - - - - -
-
- }- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- function _getRandomDispute(bytes32 _requestId, uint256 _seed) internal view returns (IOracle.Dispute memory) {- - |
-
65 | - - -- - | -- - | - - - - -
-
- bytes32[] storage disputes = _ghost_disputes[_requestId];- - |
-
66 | - - -- - | -- - | - - - - -
-
- if (disputes.length == 0) {- - |
-
67 | - - -- - | -- - | - - - - -
-
- return IOracle.Dispute(address(0), address(0), bytes32(0), 0);- - |
-
68 | - - -- - | -- - | - - - - -
-
- }- - |
-
69 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = disputes[_seed % disputes.length];- - |
-
70 | - - -- - | -- - | - - - - -
-
- return _ghost_disputeData[disputeId];- - |
-
71 | - - -- - | -- - | - - - - -
-
- }- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- // Events to track state changes- - |
-
74 | - - -- - | -- - | - - - - -
-
- event RequestCreated(bytes32 indexed requestId, uint256 epoch, string chainId);- - |
-
75 | - - -- - | -- - | - - - - -
-
- event ResponseProposed(bytes32 indexed requestId, bytes32 indexed responseId);- - |
-
76 | - - -- - | -- - | - - - - -
-
- event DisputeCreated(bytes32 indexed requestId, bytes32 indexed responseId, bytes32 indexed disputeId);- - |
-
77 | - - -- - | -- - | - - - - -
-
- event ResponseFinalized(bytes32 indexed requestId, bytes32 indexed responseId);- - |
-
78 | - - -- - | -- - | - - - - -
-
- event DisputeResolved(bytes32 indexed disputeId, IOracle.DisputeStatus status);- - |
-
79 | - - -- - | -- - | - - - - -
-
- }- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -7 / 8 (87.5%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerArbitrable is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handleValidateArbitrator(uint256 _actorSeed) external {- - |
-
8 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address caller = _pickActor(_actorSeed);- - |
-
9 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- arbitrable.validateArbitrator(caller);- - |
-
10 | - - -- - | -- - | - - - - -
-
- }- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- function handleSetArbitrator(uint256 _actorSeed) external {- - |
-
13 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address newArbitrator = _pickActor(_actorSeed);- - |
-
14 | - - -
-
- √
-
- |
- - - | - - - - -
-
- arbitrable.setArbitrator(newArbitrator);- - |
-
15 | - - -- - | -- - | - - - - -
-
- }- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- function handleSetPendingCouncil(uint256 _actorSeed) external {- - |
-
18 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address pendingCouncil = _pickActor(_actorSeed);- - |
-
19 | - - -
-
- √
-
- |
- - - | - - - - -
-
- arbitrable.setPendingCouncil(pendingCouncil);- - |
-
20 | - - -- - | -- - | - - - - -
-
- }- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- function handleConfirmCouncil() external {- - |
-
23 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- arbitrable.confirmCouncil();- - |
-
24 | - - -- - | -- - | - - - - -
-
- }- - |
-
25 | - - -- - | -- - | - - - - -
-
- }- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -10 / 49 (20.4%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IOracle} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerBondEscalationModule is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handleDisputeResponseBondEscalationModule(uint256 _requestSeed, uint256 _actorSeed) external {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = _ghost_activeResponses[requestId];- - |
-
12 | - - -- - | -- - | - - - - -
-
- if (responseId == bytes32(0)) return;- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[responseId];- - |
-
15 | - - -- - | -- - | - - - - -
-
- if (_ghost_finalizedResponses[responseId]) return;- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- // Create dispute data- - |
-
18 | - - -- - | -- - | - - - - -
-
- address disputer = _pickActor(_actorSeed);- - |
-
19 | - - -- - | -- - | - - - - -
-
- uint256 bond = _boundAmount(1e18);- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute =- - |
-
22 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute({disputer: disputer, proposer: msg.sender, responseId: responseId, requestId: requestId});- - |
-
23 | - - -- - | -- - | - - - - -- - - - | -
24 | - - -- - | -- - | - - - - -
-
- // Submit dispute- - |
-
25 | - - -- - | -- - | - - - - -
-
- bondEscalationModule.disputeResponse(_ghost_requestData[requestId], response, dispute);- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- // Track dispute- - |
-
28 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
29 | - - -- - | -- - | - - - - -
-
- _ghost_disputes[requestId].push(disputeId);- - |
-
30 | - - -- - | -- - | - - - - -
-
- _ghost_disputeData[disputeId] = dispute;- - |
-
31 | - - -- - | -- - | - - - - -
-
- _ghost_bonds[disputer][requestId] = bond;- - |
-
32 | - - -- - | -- - | - - - - -
-
- _ghost_disputeStatuses[disputeId] = IOracle.DisputeStatus.Escalated;- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- emit DisputeCreated(requestId, responseId, disputeId);- - |
-
35 | - - -- - | -- - | - - - - -
-
- }- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- function handleOnDisputeStatusChange(uint256 _requestSeed, uint256 _disputeIndex) external {- - |
-
38 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
39 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
42 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
43 | - - -- - | -- - | - - - - -- - - - | -
44 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
45 | - - -- - | -- - | - - - - -
-
- bondEscalationModule.onDisputeStatusChange(- - |
-
46 | - - -- - | -- - | - - - - -
-
- disputeId, _ghost_requestData[requestId], _ghost_responseData[dispute.responseId], dispute- - |
-
47 | - - -- - | -- - | - - - - -
-
- );- - |
-
48 | - - -- - | -- - | - - - - -
-
- }- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- function handlePledgeForDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external {- - |
-
51 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
52 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
55 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
56 | - - -- - | -- - | - - - - -- - - - | -
57 | - - -- - | -- - | - - - - -
-
- if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return;- - |
-
58 | - - -- - | -- - | - - - - -- - - - | -
59 | - - -- - | -- - | - - - - -
-
- address pledger = _pickActor(_actorSeed);- - |
-
60 | - - -- - | -- - | - - - - -
-
- bondEscalationModule.pledgeForDispute(_ghost_requestData[requestId], dispute);- - |
-
61 | - - -- - | -- - | - - - - -- - - - | -
62 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
63 | - - -- - | -- - | - - - - -
-
- _ghost_pledgesFor[pledger][disputeId] += _boundAmount(1e18);- - |
-
64 | - - -- - | -- - | - - - - -
-
- }- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- function handlePledgeAgainstDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external {- - |
-
67 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
68 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
69 | - - -- - | -- - | - - - - -- - - - | -
70 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
71 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return;- - |
-
74 | - - -- - | -- - | - - - - -- - - - | -
75 | - - -- - | -- - | - - - - -
-
- address pledger = _pickActor(_actorSeed);- - |
-
76 | - - -- - | -- - | - - - - -
-
- bondEscalationModule.pledgeAgainstDispute(_ghost_requestData[requestId], dispute);- - |
-
77 | - - -- - | -- - | - - - - -- - - - | -
78 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
79 | - - -- - | -- - | - - - - -
-
- _ghost_pledgesAgainst[pledger][disputeId] += _boundAmount(1e18);- - |
-
80 | - - -- - | -- - | - - - - -
-
- }- - |
-
81 | - - -- - | -- - | - - - - -- - - - | -
82 | - - -- - | -- - | - - - - -
-
- function handleSettleBondEscalation(uint256 _requestSeed, uint256 _disputeIndex) external {- - |
-
83 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
84 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
85 | - - -- - | -- - | - - - - -- - - - | -
86 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
87 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[dispute.responseId];- - |
-
90 | - - -- - | -- - | - - - - -
-
- bondEscalationModule.settleBondEscalation(_ghost_requestData[requestId], response, dispute);- - |
-
91 | - - -- - | -- - | - - - - -
-
- }- - |
-
92 | - - -- - | -- - | - - - - -
-
- }- - |
-
93 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -6 / 28 (21.4%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IOracle} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerBondedResponseModule is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handlePropose(uint256 _requestSeed, uint256 _blockNumber, uint256 _actorSeed) external {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;- - |
-
10 | - - -- - | -- - | - - - - -
-
- if (_ghost_activeResponses[requestId] != bytes32(0)) return; // Only one active response at a time- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- // Create response data- - |
-
13 | - - -- - | -- - | - - - - -
-
- address proposer = _pickActor(_actorSeed);- - |
-
14 | - - -- - | -- - | - - - - -
-
- _blockNumber = _boundBlockNumber(_blockNumber);- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory request = _ghost_requestData[requestId];- - |
-
17 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response =- - |
-
18 | - - -- - | -- - | - - - - -
-
- IOracle.Response({requestId: requestId, response: abi.encode(_blockNumber), proposer: proposer});- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- // Submit response- - |
-
21 | - - -- - | -- - | - - - - -
-
- bondedResponseModule.propose(request, response, proposer);- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- // Track response- - |
-
24 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = keccak256(abi.encode(response));- - |
-
25 | - - -- - | -- - | - - - - -
-
- _ghost_activeResponses[requestId] = responseId;- - |
-
26 | - - -- - | -- - | - - - - -
-
- _ghost_responseData[responseId] = response;- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- emit ResponseProposed(requestId, responseId);- - |
-
29 | - - -- - | -- - | - - - - -
-
- }- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- function handleFinalizeRequestResponseModule(uint256 _requestSeed) external {- - |
-
32 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
33 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = _ghost_activeResponses[requestId];- - |
-
36 | - - -- - | -- - | - - - - -
-
- if (responseId == bytes32(0)) return;- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[responseId];- - |
-
39 | - - -- - | -- - | - - - - -
-
- if (_ghost_finalizedResponses[responseId]) return;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- bondedResponseModule.finalizeRequest(_ghost_requestData[requestId], response, response.proposer);- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- _ghost_finalizedResponses[responseId] = true;- - |
-
44 | - - -- - | -- - | - - - - -
-
- emit ResponseFinalized(requestId, responseId);- - |
-
45 | - - -- - | -- - | - - - - -
-
- }- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- function handleReleaseUnutilizedResponse(uint256 _requestSeed) external {- - |
-
48 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
49 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _getRandomActiveResponse(requestId);- - |
-
52 | - - -- - | -- - | - - - - -
-
- if (response.requestId == bytes32(0)) return;- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- bondedResponseModule.releaseUnutilizedResponse(_ghost_requestData[requestId], response);- - |
-
55 | - - -- - | -- - | - - - - -
-
- }- - |
-
56 | - - -- - | -- - | - - - - -
-
- }- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -4 / 17 (23.5%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IOracle} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerCouncilArbitrator is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handleResolve(uint256 _requestSeed, uint256 _disputeIndex) external {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
12 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[dispute.responseId];- - |
-
15 | - - -- - | -- - | - - - - -
-
- councilArbitrator.resolve(_ghost_requestData[requestId], response, dispute);- - |
-
16 | - - -- - | -- - | - - - - -
-
- }- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
18 | - - -- - | -- - | - - - - -
-
- function handleArbitrateDispute(uint256 _requestSeed, uint256 _disputeIndex, uint256 _statusSeed) external {- - |
-
19 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
20 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
23 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- // Generate a valid dispute status (NoResolution, Won, Lost)- - |
-
28 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus status = IOracle.DisputeStatus(- - |
-
29 | - - -- - | -- - | - - - - -
-
- bound(_statusSeed, uint8(IOracle.DisputeStatus.NoResolution), uint8(IOracle.DisputeStatus.Lost))- - |
-
30 | - - -- - | -- - | - - - - -
-
- );- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- councilArbitrator.arbitrateDispute(disputeId, status);- - |
-
33 | - - -- - | -- - | - - - - -
-
- _ghost_disputeStatuses[disputeId] = status;- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- emit DisputeResolved(disputeId, status);- - |
-
36 | - - -- - | -- - | - - - - -
-
- }- - |
-
37 | - - -- - | -- - | - - - - -
-
- }- - |
-
38 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -7 / 19 (36.8%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IEBORequestCreator, IOracle} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerEBOFinalityModule is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handleFinalizeRequestFinalityModule(uint256 _requestSeed) external {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) return;- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = _ghost_activeResponses[requestId];- - |
-
12 | - - -- - | -- - | - - - - -
-
- if (responseId == bytes32(0)) return;- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[responseId];- - |
-
15 | - - -- - | -- - | - - - - -
-
- eboFinalityModule.finalizeRequest(_ghost_requestData[requestId], response, response.proposer);- - |
-
16 | - - -- - | -- - | - - - - -
-
- }- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
18 | - - -- - | -- - | - - - - -
-
- function handleAmendEpoch(- - |
-
19 | - - -- - | -- - | - - - - -
-
- uint256 _epoch,- - |
-
20 | - - -- - | -- - | - - - - -
-
- uint256[] calldata _chainIdSeeds,- - |
-
21 | - - -- - | -- - | - - - - -
-
- uint256[] calldata _blockNumbers- - |
-
22 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
23 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_chainIdSeeds.length != _blockNumbers.length) return;- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- _epoch = _boundEpoch(_epoch);- - |
-
26 | - - -- - | -- - | - - - - -
-
- string[] memory chainIds = new string[](_chainIdSeeds.length);- - |
-
27 | - - -- - | -- - | - - - - -
-
- uint256[] memory blockNums = new uint256[](_blockNumbers.length);- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- for (uint256 i = 0; i < _chainIdSeeds.length; i++) {- - |
-
30 | - - -- - | -- - | - - - - -
-
- chainIds[i] = _generateChainId(_chainIdSeeds[i]);- - |
-
31 | - - -- - | -- - | - - - - -
-
- blockNums[i] = _boundBlockNumber(_blockNumbers[i]);- - |
-
32 | - - -- - | -- - | - - - - -
-
- }- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
34 | - - -- - | -- - | - - - - -
-
- eboFinalityModule.amendEpoch(_epoch, chainIds, blockNums);- - |
-
35 | - - -- - | -- - | - - - - -
-
- }- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- function handleAddEBORequestCreatorFinalityModule(uint256 _actorSeed) external {- - |
-
38 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address creator = _pickActor(_actorSeed);- - |
-
39 | - - -
-
- √
-
- |
- - - | - - - - -
-
- eboFinalityModule.addEBORequestCreator(IEBORequestCreator(creator));- - |
-
40 | - - -- - | -- - | - - - - -
-
- }- - |
-
41 | - - -- - | -- - | - - - - -- - - - | -
42 | - - -- - | -- - | - - - - -
-
- function handleRemoveEBORequestCreatorFinalityModule(uint256 _actorSeed) external {- - |
-
43 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address creator = _pickActor(_actorSeed);- - |
-
44 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboFinalityModule.removeEBORequestCreator(IEBORequestCreator(creator));- - |
-
45 | - - -- - | -- - | - - - - -
-
- }- - |
-
46 | - - -- - | -- - | - - - - -
-
- }- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -20 / 28 (71.4%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {- - |
-
5 | - - -- - | -- - | - - - - -
-
- BaseHandler,- - |
-
6 | - - -- - | -- - | - - - - -
-
- IArbitratorModule,- - |
-
7 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule,- - |
-
8 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule,- - |
-
9 | - - -- - | -- - | - - - - -
-
- IEBORequestModule,- - |
-
10 | - - -- - | -- - | - - - - -
-
- IEpochManager,- - |
-
11 | - - -- - | -- - | - - - - -
-
- IOracle- - |
-
12 | - - -- - | -- - | - - - - -
-
- } from './BaseHandler.t.sol';- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- contract HandlerEBORequestCreator is BaseHandler {- - |
-
15 | - - -- - | -- - | - - - - -
-
- function handleCreateRequest(uint256 _epoch, uint256 _chainIdSeed) external {- - |
-
16 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- _epoch = _boundEpoch(_epoch);- - |
-
17 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- string memory chainId = _generateChainId(_chainIdSeed);- - |
-
18 | - - -- - | -- - | - - - - -- - - - | -
19 | - - -- - | -- - | - - - - -
-
- // Prevent duplicate chainId for same epoch- - |
-
20 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- if (_ghost_epochChainIds[_epoch][chainId]) return;- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- // Create request via EBORequestCreator- - |
-
23 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.createRequest(_epoch, chainId);- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- // Get current request data- - |
-
26 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory requestData = eboRequestCreator.getRequestData();- - |
-
27 | - - -- - | -- - | - - - - -- - - - | -
28 | - - -- - | -- - | - - - - -
-
- // Calculate request ID using same logic as Oracle- - |
-
29 | - - -- - | -- - | - - - - -
-
- bytes32 requestId = keccak256(abi.encode(requestData));- - |
-
30 | - - -- - | -- - | - - - - -- - - - | -
31 | - - -- - | -- - | - - - - -
-
- // Track the request- - |
-
32 | - - -- - | -- - | - - - - -
-
- _ghost_requests.push(requestId);- - |
-
33 | - - -- - | -- - | - - - - -
-
- _ghost_requestData[requestId] = requestData;- - |
-
34 | - - -- - | -- - | - - - - -
-
- _ghost_validRequests[requestId] = true;- - |
-
35 | - - -- - | -- - | - - - - -
-
- _ghost_epochChainIds[_epoch][chainId] = true;- - |
-
36 | - - -- - | -- - | - - - - -- - - - | -
37 | - - -- - | -- - | - - - - -
-
- emit RequestCreated(requestId, _epoch, chainId);- - |
-
38 | - - -- - | -- - | - - - - -
-
- }- - |
-
39 | - - -- - | -- - | - - - - -- - - - | -
40 | - - -- - | -- - | - - - - -
-
- function handleAddChain(uint256 _chainIdSeed) external {- - |
-
41 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- string memory chainId = _generateChainId(_chainIdSeed);- - |
-
42 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.addChain(chainId);- - |
-
43 | - - -- - | -- - | - - - - -
-
- }- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -- - | -- - | - - - - -
-
- function handleRemoveChain(uint256 _chainIdSeed) external {- - |
-
46 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- string memory chainId = _generateChainId(_chainIdSeed);- - |
-
47 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.removeChain(chainId);- - |
-
48 | - - -- - | -- - | - - - - -
-
- }- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- function handleSetRequestModuleData(- - |
-
51 | - - -- - | -- - | - - - - -
-
- uint256 _actorSeed,- - |
-
52 | - - -- - | -- - | - - - - -
-
- IEBORequestModule.RequestParameters calldata _params- - |
-
53 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
54 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address module = _pickActor(_actorSeed);- - |
-
55 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.setRequestModuleData(module, _params);- - |
-
56 | - - -- - | -- - | - - - - -
-
- }- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- function handleSetResponseModuleData(- - |
-
59 | - - -- - | -- - | - - - - -
-
- uint256 _actorSeed,- - |
-
60 | - - -- - | -- - | - - - - -
-
- IBondedResponseModule.RequestParameters calldata _params- - |
-
61 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
62 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address module = _pickActor(_actorSeed);- - |
-
63 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.setResponseModuleData(module, _params);- - |
-
64 | - - -- - | -- - | - - - - -
-
- }- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- function handleSetDisputeModuleData(- - |
-
67 | - - -- - | -- - | - - - - -
-
- uint256 _actorSeed,- - |
-
68 | - - -- - | -- - | - - - - -
-
- IBondEscalationModule.RequestParameters calldata _params- - |
-
69 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
70 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address module = _pickActor(_actorSeed);- - |
-
71 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.setDisputeModuleData(module, _params);- - |
-
72 | - - -- - | -- - | - - - - -
-
- }- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- function handleSetResolutionModuleData(- - |
-
75 | - - -- - | -- - | - - - - -
-
- uint256 _actorSeed,- - |
-
76 | - - -- - | -- - | - - - - -
-
- IArbitratorModule.RequestParameters calldata _params- - |
-
77 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
78 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address module = _pickActor(_actorSeed);- - |
-
79 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.setResolutionModuleData(module, _params);- - |
-
80 | - - -- - | -- - | - - - - -
-
- }- - |
-
81 | - - -- - | -- - | - - - - -- - - - | -
82 | - - -- - | -- - | - - - - -
-
- function handleSetFinalityModuleData(uint256 _actorSeed) external {- - |
-
83 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address module = _pickActor(_actorSeed);- - |
-
84 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.setFinalityModuleData(module);- - |
-
85 | - - -- - | -- - | - - - - -
-
- }- - |
-
86 | - - -- - | -- - | - - - - -- - - - | -
87 | - - -- - | -- - | - - - - -
-
- function handleSetEpochManager(uint256 _actorSeed) external {- - |
-
88 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address manager = _pickActor(_actorSeed);- - |
-
89 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.setEpochManager(IEpochManager(manager));- - |
-
90 | - - -- - | -- - | - - - - -
-
- }- - |
-
91 | - - -- - | -- - | - - - - -
-
- }- - |
-
92 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -4 / 5 (80.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IEBORequestCreator} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerEBORequestModule is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handleAddEBORequestCreatorRequestModule(uint256 _actorSeed) external {- - |
-
8 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address creator = _pickActor(_actorSeed);- - |
-
9 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestModule.addEBORequestCreator(IEBORequestCreator(creator));- - |
-
10 | - - -- - | -- - | - - - - -
-
- }- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- function handleRemoveEBORequestCreatorRequestModule(uint256 _actorSeed) external {- - |
-
13 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- address creator = _pickActor(_actorSeed);- - |
-
14 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestModule.removeEBORequestCreator(IEBORequestCreator(creator));- - |
-
15 | - - -- - | -- - | - - - - -
-
- }- - |
-
16 | - - -- - | -- - | - - - - -
-
- }- - |
-
17 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -26 / 58 (44.8%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IOracle} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerHorizonAccountingExtension is BaseHandler {- - |
-
7 | - - -- - | -- - | - - - - -
-
- function handleApproveModule(uint256 _actorSeed) external {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address module = _pickActor(_actorSeed);- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonAccountingExtension.approveModule(module);- - |
-
10 | - - -- - | -- - | - - - - -
-
- }- - |
-
11 | - - -- - | -- - | - - - - -- - - - | -
12 | - - -- - | -- - | - - - - -
-
- function handleRevokeModule(uint256 _actorSeed) external {- - |
-
13 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address module = _pickActor(_actorSeed);- - |
-
14 | - - -
-
- √
-
- |
- - - | - - - - -
-
- horizonAccountingExtension.revokeModule(module);- - |
-
15 | - - -- - | -- - | - - - - -
-
- }- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- function handlePledge(uint256 _pledgerSeed, uint256 _requestSeed, uint256 _disputeIndex, uint256 _amount) external {- - |
-
18 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address pledger = _pickActor(_pledgerSeed);- - |
-
19 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
20 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
23 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- _amount = _boundAmount(_amount);- - |
-
26 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.pledge(pledger, _ghost_requestData[requestId], dispute, GRT, _amount);- - |
-
27 | - - -- - | -- - | - - - - -
-
- }- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- function handleOnSettleBondEscalation(- - |
-
30 | - - -- - | -- - | - - - - -
-
- uint256 _requestSeed,- - |
-
31 | - - -- - | -- - | - - - - -
-
- uint256 _disputeIndex,- - |
-
32 | - - -- - | -- - | - - - - -
-
- uint256 _amountPerPledger,- - |
-
33 | - - -- - | -- - | - - - - -
-
- uint256 _winningPledgersLength- - |
-
34 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
35 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
36 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
39 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- _amountPerPledger = _boundAmount(_amountPerPledger);- - |
-
42 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.onSettleBondEscalation(- - |
-
43 | - - -- - | -- - | - - - - -
-
- _ghost_requestData[requestId], dispute, GRT, _amountPerPledger, _winningPledgersLength- - |
-
44 | - - -- - | -- - | - - - - -
-
- );- - |
-
45 | - - -- - | -- - | - - - - -
-
- }- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- function handleClaimEscalationReward(uint256 _requestSeed, uint256 _disputeIndex, uint256 _actorSeed) external {- - |
-
48 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
49 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
50 | - - -- - | -- - | - - - - -- - - - | -
51 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
52 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- address pledger = _pickActor(_actorSeed);- - |
-
55 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
56 | - - -- - | -- - | - - - - -- - - - | -
57 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.claimEscalationReward(disputeId, pledger);- - |
-
58 | - - -- - | -- - | - - - - -
-
- }- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- function handlePay(uint256 _requestSeed, uint256 _payerSeed, uint256 _receiverSeed, uint256 _amount) external {- - |
-
61 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
62 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
63 | - - -- - | -- - | - - - - -- - - - | -
64 | - - -- - | -- - | - - - - -
-
- address payer = _pickActor(_payerSeed);- - |
-
65 | - - -- - | -- - | - - - - -
-
- address receiver = _pickActor(_receiverSeed);- - |
-
66 | - - -- - | -- - | - - - - -
-
- _amount = _boundAmount(_amount);- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.pay(requestId, payer, receiver, GRT, _amount);- - |
-
69 | - - -- - | -- - | - - - - -
-
- }- - |
-
70 | - - -- - | -- - | - - - - -- - - - | -
71 | - - -- - | -- - | - - - - -
-
- function handleBond(uint256 _bonderSeed, uint256 _requestSeed, uint256 _amount) external {- - |
-
72 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address bonder = _pickActor(_bonderSeed);- - |
-
73 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
74 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- _amount = _boundAmount(_amount);- - |
-
77 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.bond(bonder, requestId, GRT, _amount);- - |
-
78 | - - -- - | -- - | - - - - -
-
- }- - |
-
79 | - - -- - | -- - | - - - - -- - - - | -
80 | - - -- - | -- - | - - - - -
-
- function handleBondWithSender(- - |
-
81 | - - -- - | -- - | - - - - -
-
- uint256 _bonderSeed,- - |
-
82 | - - -- - | -- - | - - - - -
-
- uint256 _requestSeed,- - |
-
83 | - - -- - | -- - | - - - - -
-
- uint256 _amount,- - |
-
84 | - - -- - | -- - | - - - - -
-
- uint256 _senderSeed- - |
-
85 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
86 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address bonder = _pickActor(_bonderSeed);- - |
-
87 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
88 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
89 | - - -- - | -- - | - - - - -- - - - | -
90 | - - -- - | -- - | - - - - -
-
- _amount = _boundAmount(_amount);- - |
-
91 | - - -- - | -- - | - - - - -
-
- address sender = _pickActor(_senderSeed);- - |
-
92 | - - -- - | -- - | - - - - -- - - - | -
93 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.bond(bonder, requestId, GRT, _amount, sender);- - |
-
94 | - - -- - | -- - | - - - - -
-
- }- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- function handleRelease(uint256 _bonderSeed, uint256 _requestSeed, uint256 _amount) external {- - |
-
97 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address bonder = _pickActor(_bonderSeed);- - |
-
98 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
99 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
100 | - - -- - | -- - | - - - - -- - - - | -
101 | - - -- - | -- - | - - - - -
-
- _amount = _boundAmount(_amount);- - |
-
102 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.release(bonder, requestId, GRT, _amount);- - |
-
103 | - - -- - | -- - | - - - - -
-
- }- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -- - | -- - | - - - - -
-
- function handleSlash(- - |
-
106 | - - -- - | -- - | - - - - -
-
- uint256 _requestSeed,- - |
-
107 | - - -- - | -- - | - - - - -
-
- uint256 _disputeIndex,- - |
-
108 | - - -- - | -- - | - - - - -
-
- uint256 _usersToSlash,- - |
-
109 | - - -- - | -- - | - - - - -
-
- uint256 _maxUsersToCheck- - |
-
110 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
111 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
112 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
113 | - - -- - | -- - | - - - - -- - - - | -
114 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
115 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
116 | - - -- - | -- - | - - - - -- - - - | -
117 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
118 | - - -- - | -- - | - - - - -
-
- _usersToSlash = bound(_usersToSlash, 1, 10);- - |
-
119 | - - -- - | -- - | - - - - -
-
- _maxUsersToCheck = bound(_maxUsersToCheck, _usersToSlash, 20);- - |
-
120 | - - -- - | -- - | - - - - -- - - - | -
121 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension.slash(disputeId, _usersToSlash, _maxUsersToCheck);- - |
-
122 | - - -- - | -- - | - - - - -
-
- }- - |
-
123 | - - -- - | -- - | - - - - -- - - - | -
124 | - - -- - | -- - | - - - - -
-
- function handleSetMaxUsersToCheck(uint256 _maxUsers) external {- - |
-
125 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- _maxUsers = bound(_maxUsers, 1, 100);- - |
-
126 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- horizonAccountingExtension.setMaxUsersToCheck(uint128(_maxUsers));- - |
-
127 | - - -- - | -- - | - - - - -
-
- }- - |
-
128 | - - -- - | -- - | - - - - -
-
- }- - |
-
129 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -22 / 80 (27.5%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {BaseHandler, IOracle} from './BaseHandler.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract HandlerOracle is BaseHandler {- - |
-
7 | - - -
-
- √
-
- |
- - - | - - - - -
-
- function handleCreateRequest(uint256 _requestSeed, bytes32 _previousId) external returns (bytes32) {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return bytes32(0);- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- return oracle.createRequest(_ghost_requestData[requestId], _previousId);- - |
-
12 | - - -- - | -- - | - - - - -
-
- }- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- function handleCreateRequests(- - |
-
15 | - - -- - | -- - | - - - - -
-
- uint256[] calldata _requestSeeds,- - |
-
16 | - - -- - | -- - | - - - - -
-
- bytes32[] calldata _previousIds- - |
-
17 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ) external returns (bytes32[] memory) {- - |
-
18 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (_requestSeeds.length != _previousIds.length) {- - |
-
19 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return new bytes32[](0);- - |
-
20 | - - -- - | -- - | - - - - -
-
- }- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- IOracle.Request[] memory requests = new IOracle.Request[](_requestSeeds.length);- - |
-
23 | - - -- - | -- - | - - - - -
-
- for (uint256 i = 0; i < _requestSeeds.length; i++) {- - |
-
24 | - - -- - | -- - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeeds[i]);- - |
-
25 | - - -- - | -- - | - - - - -
-
- if (requestId == bytes32(0)) return new bytes32[](0);- - |
-
26 | - - -- - | -- - | - - - - -
-
- requests[i] = _ghost_requestData[requestId];- - |
-
27 | - - -- - | -- - | - - - - -
-
- }- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- return oracle.createRequests(requests, _previousIds);- - |
-
30 | - - -- - | -- - | - - - - -
-
- }- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- function handleProposeResponse(- - |
-
33 | - - -- - | -- - | - - - - -
-
- uint256 _requestSeed,- - |
-
34 | - - -- - | -- - | - - - - -
-
- uint256 _blockNumber,- - |
-
35 | - - -- - | -- - | - - - - -
-
- uint256 _actorSeed- - |
-
36 | - - -
-
- √
-
- |
- - - | - - - - -
-
- ) external returns (bytes32) {- - |
-
37 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
38 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) {- - |
-
39 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return bytes32(0);- - |
-
40 | - - -- - | -- - | - - - - -
-
- }- - |
-
41 | - - -- - | -- - | - - - - -
-
- if (_ghost_activeResponses[requestId] != bytes32(0)) return bytes32(0);- - |
-
42 | - - -- - | -- - | - - - - -- - - - | -
43 | - - -- - | -- - | - - - - -
-
- address proposer = _pickActor(_actorSeed);- - |
-
44 | - - -- - | -- - | - - - - -
-
- _blockNumber = _boundBlockNumber(_blockNumber);- - |
-
45 | - - -- - | -- - | - - - - -- - - - | -
46 | - - -- - | -- - | - - - - -
-
- IOracle.Request memory request = _ghost_requestData[requestId];- - |
-
47 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response =- - |
-
48 | - - -- - | -- - | - - - - -
-
- IOracle.Response({requestId: requestId, response: abi.encode(_blockNumber), proposer: proposer});- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = oracle.proposeResponse(request, response);- - |
-
51 | - - -- - | -- - | - - - - -- - - - | -
52 | - - -- - | -- - | - - - - -
-
- // Track response- - |
-
53 | - - -- - | -- - | - - - - -
-
- _ghost_activeResponses[requestId] = responseId;- - |
-
54 | - - -- - | -- - | - - - - -
-
- _ghost_responseData[responseId] = response;- - |
-
55 | - - -- - | -- - | - - - - -- - - - | -
56 | - - -- - | -- - | - - - - -
-
- emit ResponseProposed(requestId, responseId);- - |
-
57 | - - -- - | -- - | - - - - -- - - - | -
58 | - - -- - | -- - | - - - - -
-
- return responseId;- - |
-
59 | - - -- - | -- - | - - - - -
-
- }- - |
-
60 | - - -- - | -- - | - - - - -- - - - | -
61 | - - -
-
- √
-
- |
- - - | - - - - -
-
- function handleDisputeResponseOracle(uint256 _requestSeed, uint256 _actorSeed) external returns (bytes32) {- - |
-
62 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
63 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0) || !_ghost_validRequests[requestId]) {- - |
-
64 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return bytes32(0);- - |
-
65 | - - -- - | -- - | - - - - -
-
- }- - |
-
66 | - - -- - | -- - | - - - - -- - - - | -
67 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = _ghost_activeResponses[requestId];- - |
-
68 | - - -- - | -- - | - - - - -
-
- if (responseId == bytes32(0)) return bytes32(0);- - |
-
69 | - - -- - | -- - | - - - - -- - - - | -
70 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[responseId];- - |
-
71 | - - -- - | -- - | - - - - -
-
- if (_ghost_finalizedResponses[responseId]) return bytes32(0);- - |
-
72 | - - -- - | -- - | - - - - -- - - - | -
73 | - - -- - | -- - | - - - - -
-
- address disputer = _pickActor(_actorSeed);- - |
-
74 | - - -- - | -- - | - - - - -
-
- uint256 bond = _boundAmount(1e18);- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute =- - |
-
77 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute({disputer: disputer, proposer: response.proposer, requestId: requestId, responseId: responseId});- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = oracle.disputeResponse(_ghost_requestData[requestId], response, dispute);- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- // Track dispute- - |
-
82 | - - -- - | -- - | - - - - -
-
- _ghost_disputes[requestId].push(disputeId);- - |
-
83 | - - -- - | -- - | - - - - -
-
- _ghost_disputeData[disputeId] = dispute;- - |
-
84 | - - -- - | -- - | - - - - -
-
- _ghost_bonds[disputer][requestId] = bond;- - |
-
85 | - - -- - | -- - | - - - - -
-
- _ghost_disputeStatuses[disputeId] = IOracle.DisputeStatus.Escalated;- - |
-
86 | - - -- - | -- - | - - - - -- - - - | -
87 | - - -- - | -- - | - - - - -
-
- emit DisputeCreated(requestId, responseId, disputeId);- - |
-
88 | - - -- - | -- - | - - - - -- - - - | -
89 | - - -- - | -- - | - - - - -
-
- return disputeId;- - |
-
90 | - - -- - | -- - | - - - - -
-
- }- - |
-
91 | - - -- - | -- - | - - - - -- - - - | -
92 | - - -- - | -- - | - - - - -
-
- function handleEscalateDispute(uint256 _requestSeed, uint256 _disputeIndex) external {- - |
-
93 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
94 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
97 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
98 | - - -- - | -- - | - - - - -- - - - | -
99 | - - -- - | -- - | - - - - -
-
- if (_ghost_disputeStatuses[keccak256(abi.encode(dispute))] != IOracle.DisputeStatus.Escalated) return;- - |
-
100 | - - -- - | -- - | - - - - -- - - - | -
101 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[dispute.responseId];- - |
-
102 | - - -- - | -- - | - - - - -
-
- oracle.escalateDispute(_ghost_requestData[requestId], response, dispute);- - |
-
103 | - - -- - | -- - | - - - - -
-
- }- - |
-
104 | - - -- - | -- - | - - - - -- - - - | -
105 | - - -- - | -- - | - - - - -
-
- function handleResolveDispute(uint256 _requestSeed, uint256 _disputeIndex) external {- - |
-
106 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
107 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
108 | - - -- - | -- - | - - - - -- - - - | -
109 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
110 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
111 | - - -- - | -- - | - - - - -- - - - | -
112 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[dispute.responseId];- - |
-
113 | - - -- - | -- - | - - - - -
-
- oracle.resolveDispute(_ghost_requestData[requestId], response, dispute);- - |
-
114 | - - -- - | -- - | - - - - -
-
- }- - |
-
115 | - - -- - | -- - | - - - - -- - - - | -
116 | - - -- - | -- - | - - - - -
-
- function handleUpdateDisputeStatus(uint256 _requestSeed, uint256 _disputeIndex, uint256 _statusSeed) external {- - |
-
117 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
118 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
119 | - - -- - | -- - | - - - - -- - - - | -
120 | - - -- - | -- - | - - - - -
-
- IOracle.Dispute memory dispute = _getRandomDispute(requestId, _disputeIndex);- - |
-
121 | - - -- - | -- - | - - - - -
-
- if (dispute.requestId == bytes32(0)) return;- - |
-
122 | - - -- - | -- - | - - - - -- - - - | -
123 | - - -- - | -- - | - - - - -
-
- // Generate a valid dispute status (NoResolution, Won, Lost)- - |
-
124 | - - -- - | -- - | - - - - -
-
- IOracle.DisputeStatus status = IOracle.DisputeStatus(- - |
-
125 | - - -- - | -- - | - - - - -
-
- bound(_statusSeed, uint8(IOracle.DisputeStatus.NoResolution), uint8(IOracle.DisputeStatus.Lost))- - |
-
126 | - - -- - | -- - | - - - - -
-
- );- - |
-
127 | - - -- - | -- - | - - - - -- - - - | -
128 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[dispute.responseId];- - |
-
129 | - - -- - | -- - | - - - - -
-
- oracle.updateDisputeStatus(_ghost_requestData[requestId], response, dispute, status);- - |
-
130 | - - -- - | -- - | - - - - -- - - - | -
131 | - - -- - | -- - | - - - - -
-
- bytes32 disputeId = keccak256(abi.encode(dispute));- - |
-
132 | - - -- - | -- - | - - - - -
-
- _ghost_disputeStatuses[disputeId] = status;- - |
-
133 | - - -- - | -- - | - - - - -- - - - | -
134 | - - -- - | -- - | - - - - -
-
- emit DisputeResolved(disputeId, status);- - |
-
135 | - - -- - | -- - | - - - - -
-
- }- - |
-
136 | - - -- - | -- - | - - - - -- - - - | -
137 | - - -- - | -- - | - - - - -
-
- function handleFinalize(uint256 _requestSeed) external {- - |
-
138 | - - -
-
- √
-
- |
- - - | - - - - -
-
- bytes32 requestId = _getRandomRequest(_requestSeed);- - |
-
139 | - - -
-
- √
-
- |
- - - | - - - - -
-
- if (requestId == bytes32(0)) return;- - |
-
140 | - - -- - | -- - | - - - - -- - - - | -
141 | - - -- - | -- - | - - - - -
-
- bytes32 responseId = _ghost_activeResponses[requestId];- - |
-
142 | - - -- - | -- - | - - - - -
-
- if (responseId == bytes32(0)) return;- - |
-
143 | - - -- - | -- - | - - - - -- - - - | -
144 | - - -- - | -- - | - - - - -
-
- IOracle.Response memory response = _ghost_responseData[responseId];- - |
-
145 | - - -- - | -- - | - - - - -
-
- oracle.finalize(_ghost_requestData[requestId], response);- - |
-
146 | - - -- - | -- - | - - - - -- - - - | -
147 | - - -- - | -- - | - - - - -
-
- _ghost_finalizedResponses[responseId] = true;- - |
-
148 | - - -- - | -- - | - - - - -
-
- emit ResponseFinalized(requestId, responseId);- - |
-
149 | - - -- - | -- - | - - - - -
-
- }- - |
-
150 | - - -- - | -- - | - - - - -
-
- }- - |
-
151 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 2 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {HandlerArbitrable} from './HandlerArbitrable.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- import {HandlerBondEscalationModule} from './HandlerBondEscalationModule.t.sol';- - |
-
7 | - - -- - | -- - | - - - - -
-
- import {HandlerBondedResponseModule} from './HandlerBondedResponseModule.t.sol';- - |
-
8 | - - -- - | -- - | - - - - -
-
- import {HandlerCouncilArbitrator} from './HandlerCouncilArbitrator.t.sol';- - |
-
9 | - - -- - | -- - | - - - - -
-
- import {HandlerEBOFinalityModule} from './HandlerEBOFinalityModule.t.sol';- - |
-
10 | - - -- - | -- - | - - - - -
-
- import {HandlerEBORequestCreator} from './HandlerEBORequestCreator.t.sol';- - |
-
11 | - - -- - | -- - | - - - - -
-
- import {HandlerEBORequestModule} from './HandlerEBORequestModule.t.sol';- - |
-
12 | - - -- - | -- - | - - - - -
-
- import {HandlerHorizonAccountingExtension} from './HandlerHorizonAccountingExtension.t.sol';- - |
-
13 | - - -- - | -- - | - - - - -
-
- import {HandlerOracle} from './HandlerOracle.t.sol';- - |
-
14 | - - -- - | -- - | - - - - -- - - - | -
15 | - - -- - | -- - | - - - - -
-
- contract HandlerParent is- - |
-
16 | - - -- - | -- - | - - - - -
-
- HandlerArbitrable,- - |
-
17 | - - -- - | -- - | - - - - -
-
- HandlerBondedResponseModule,- - |
-
18 | - - -- - | -- - | - - - - -
-
- HandlerBondEscalationModule,- - |
-
19 | - - -- - | -- - | - - - - -
-
- HandlerCouncilArbitrator,- - |
-
20 | - - -- - | -- - | - - - - -
-
- HandlerEBOFinalityModule,- - |
-
21 | - - -- - | -- - | - - - - -
-
- HandlerEBORequestCreator,- - |
-
22 | - - -- - | -- - | - - - - -
-
- HandlerEBORequestModule,- - |
-
23 | - - -- - | -- - | - - - - -
-
- HandlerHorizonAccountingExtension,- - |
-
24 | - - -- - | -- - | - - - - -
-
- HandlerOracle- - |
-
25 | - - -- - | -- - | - - - - -
-
- {- - |
-
26 | - - -- - | -- - | - - - - -
-
- //solhint-disable no-empty-blocks- - |
-
27 | - - -- - | -- - | - - - - -
-
- constructor() {}- - |
-
28 | - - -- - | -- - | - - - - -
-
- }- - |
-
29 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -12 / 13 (92.3%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: UNLICENSED- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {Utils} from './Utils.t.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract Actors is Utils {- - |
-
7 | - - -- - | -- - | - - - - -
-
- address[] internal _ghost_actors = [- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x10000),- - |
-
9 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x20000),- - |
-
10 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x30000),- - |
-
11 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x40000),- - |
-
12 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x50000),- - |
-
13 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x60000),- - |
-
14 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x70000),- - |
-
15 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x80000),- - |
-
16 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0x90000),- - |
-
17 | - - -
-
- √
-
- |
- - - | - - - - -
-
- address(0xa0000)- - |
-
18 | - - -- - | -- - | - - - - -
-
- ];- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- event ActorsLog(string);- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- function _pickActor(uint256 _seed) internal view returns (address) {- - |
-
23 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- return _ghost_actors[_seed % _ghost_actors.length];- - |
-
24 | - - -- - | -- - | - - - - -
-
- }- - |
-
25 | - - -- - | -- - | - - - - -
-
- }- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 7 (14.3%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {ERC20, IERC20} from '@openzeppelin/contracts/token/ERC20/ERC20.sol';- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract FuzzERC20 is ERC20 {- - |
-
7 | - - -- - | -- - | - - - - -
-
- address testContract;- - |
-
8 | - - -- - | -- - | - - - - -- - - - | -
9 | - - -- - | -- - | - - - - -
-
- constructor() ERC20('FuzzERC20', 'FuzzERC20') {- - |
-
10 | - - -
-
- √
-
- |
- - - | - - - - -
-
- testContract = msg.sender;- - |
-
11 | - - -- - | -- - | - - - - -
-
- }- - |
-
12 | - - -- - | -- - | - - - - -- - - - | -
13 | - - -- - | -- - | - - - - -
-
- function transfer(address to, uint256 amount) public override returns (bool) {- - |
-
14 | - - -- - | -- - | - - - - -
-
- address owner = _msgSender();- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- // FuzzTest has an infinite mint- - |
-
17 | - - -- - | -- - | - - - - -
-
- if (owner == testContract) {- - |
-
18 | - - -- - | -- - | - - - - -
-
- _mint(testContract, amount);- - |
-
19 | - - -- - | -- - | - - - - -
-
- }- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -- - | - - - - -
-
- _transfer(owner, to, amount);- - |
-
22 | - - -- - | -- - | - - - - -
-
- return true;- - |
-
23 | - - -- - | -- - | - - - - -
-
- }- - |
-
24 | - - -- - | -- - | - - - - -- - - - | -
25 | - - -- - | -- - | - - - - -
-
- function mint(address _to, uint256 _amount) public {- - |
-
26 | - - -- - | -- - | - - - - -
-
- _mint(_to, _amount);- - |
-
27 | - - -- - | -- - | - - - - -
-
- }- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- function burn(address _from, uint256 _amount) public {- - |
-
30 | - - -- - | -- - | - - - - -
-
- _burn(_from, _amount);- - |
-
31 | - - -- - | -- - | - - - - -
-
- }- - |
-
32 | - - -- - | -- - | - - - - -
-
- }- - |
-
33 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 0 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: UNLICENSED- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- interface IStdCheats {- - |
-
5 | - - -- - | -- - | - - - - -
-
- // Set block.timestamp- - |
-
6 | - - -- - | -- - | - - - - -
-
- function warp(uint256) external;- - |
-
7 | - - -- - | -- - | - - - - -- - - - | -
8 | - - -- - | -- - | - - - - -
-
- // Set block.number- - |
-
9 | - - -- - | -- - | - - - - -
-
- function roll(uint256) external;- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- // Set block.basefee- - |
-
12 | - - -- - | -- - | - - - - -
-
- function fee(uint256) external;- - |
-
13 | - - -- - | -- - | - - - - -- - - - | -
14 | - - -- - | -- - | - - - - -
-
- // Set block.difficulty and block.prevrandao- - |
-
15 | - - -- - | -- - | - - - - -
-
- function difficulty(uint256) external;- - |
-
16 | - - -- - | -- - | - - - - -- - - - | -
17 | - - -- - | -- - | - - - - -
-
- // Set block.chainid- - |
-
18 | - - -- - | -- - | - - - - -
-
- function chainId(uint256) external;- - |
-
19 | - - -- - | -- - | - - - - -- - - - | -
20 | - - -- - | -- - | - - - - -
-
- // Sets the block.coinbase- - |
-
21 | - - -- - | -- - | - - - - -
-
- function coinbase(address) external;- - |
-
22 | - - -- - | -- - | - - - - -- - - - | -
23 | - - -- - | -- - | - - - - -
-
- // Loads a storage slot from an address- - |
-
24 | - - -- - | -- - | - - - - -
-
- function load(address account, bytes32 slot) external returns (bytes32);- - |
-
25 | - - -- - | -- - | - - - - -- - - - | -
26 | - - -- - | -- - | - - - - -
-
- // Stores a value to an address' storage slot- - |
-
27 | - - -- - | -- - | - - - - -
-
- function store(address account, bytes32 slot, bytes32 value) external;- - |
-
28 | - - -- - | -- - | - - - - -- - - - | -
29 | - - -- - | -- - | - - - - -
-
- // Sets the *next* call's msg.sender to be the input address- - |
-
30 | - - -- - | -- - | - - - - -
-
- function prank(address) external;- - |
-
31 | - - -- - | -- - | - - - - -- - - - | -
32 | - - -- - | -- - | - - - - -
-
- // Set msg.sender to the input address until the current call exits- - |
-
33 | - - -- - | -- - | - - - - -
-
- function prankHere(address) external;- - |
-
34 | - - -- - | -- - | - - - - -- - - - | -
35 | - - -- - | -- - | - - - - -
-
- // Sets an address' balance- - |
-
36 | - - -- - | -- - | - - - - -
-
- function deal(address who, uint256 newBalance) external;- - |
-
37 | - - -- - | -- - | - - - - -- - - - | -
38 | - - -- - | -- - | - - - - -
-
- // Sets an address' code- - |
-
39 | - - -- - | -- - | - - - - -
-
- function etch(address who, bytes calldata code) external;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- // Signs data- - |
-
42 | - - -- - | -- - | - - - - -
-
- function sign(uint256 privateKey, bytes32 digest) external returns (uint8 v, bytes32 r, bytes32 s);- - |
-
43 | - - -- - | -- - | - - - - -- - - - | -
44 | - - -- - | -- - | - - - - -
-
- // Computes address for a given private key- - |
-
45 | - - -- - | -- - | - - - - -
-
- function addr(uint256 privateKey) external returns (address);- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- // Gets the nonce of an account- - |
-
48 | - - -- - | -- - | - - - - -
-
- function getNonce(address account) external returns (uint64);- - |
-
49 | - - -- - | -- - | - - - - -- - - - | -
50 | - - -- - | -- - | - - - - -
-
- // Sets the nonce of an account- - |
-
51 | - - -- - | -- - | - - - - -
-
- // The new nonce must be higher than the current nonce of the account- - |
-
52 | - - -- - | -- - | - - - - -
-
- function setNonce(address account, uint64 nonce) external;- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- // Performs a foreign function call via terminal- - |
-
55 | - - -- - | -- - | - - - - -
-
- function ffi(string[] calldata) external returns (bytes memory);- - |
-
56 | - - -- - | -- - | - - - - -- - - - | -
57 | - - -- - | -- - | - - - - -
-
- // Take a snapshot of the current state of the EVM- - |
-
58 | - - -- - | -- - | - - - - -
-
- function snapshot() external returns (uint256);- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -- - | - - - - -
-
- // Revert state back to a snapshot- - |
-
61 | - - -- - | -- - | - - - - -
-
- function revertTo(uint256) external returns (bool);- - |
-
62 | - - -- - | -- - | - - - - -- - - - | -
63 | - - -- - | -- - | - - - - -
-
- // Convert Solidity types to strings- - |
-
64 | - - -- - | -- - | - - - - -
-
- function toString(address) external returns (string memory);- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -- - | - - - - -
-
- function toString(bytes calldata) external returns (string memory);- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- function toString(bytes32) external returns (string memory);- - |
-
69 | - - -- - | -- - | - - - - -- - - - | -
70 | - - -- - | -- - | - - - - -
-
- function toString(bool) external returns (string memory);- - |
-
71 | - - -- - | -- - | - - - - -- - - - | -
72 | - - -- - | -- - | - - - - -
-
- function toString(uint256) external returns (string memory);- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- function toString(int256) external returns (string memory);- - |
-
75 | - - -- - | -- - | - - - - -- - - - | -
76 | - - -- - | -- - | - - - - -
-
- // Convert strings into Solidity types- - |
-
77 | - - -- - | -- - | - - - - -
-
- function parseBytes(string memory) external returns (bytes memory);- - |
-
78 | - - -- - | -- - | - - - - -- - - - | -
79 | - - -- - | -- - | - - - - -
-
- function parseBytes32(string memory) external returns (bytes32);- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- function parseAddress(string memory) external returns (address);- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- function parseUint(string memory) external returns (uint256);- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- function parseInt(string memory) external returns (int256);- - |
-
86 | - - -- - | -- - | - - - - -- - - - | -
87 | - - -- - | -- - | - - - - -
-
- function parseBool(string memory) external returns (bool);- - |
-
88 | - - -- - | -- - | - - - - -
-
- }- - |
-
89 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -2 / 3 (66.7%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- contract MockEpochManager {- - |
-
5 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 public currentEpoch;- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- constructor(uint256 _startEpoch) {- - |
-
8 | - - -
-
- √
-
- |
- - - | - - - - -
-
- currentEpoch = _startEpoch;- - |
-
9 | - - -- - | -- - | - - - - -
-
- }- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- function setEpoch(uint256 _epoch) external {- - |
-
12 | - - -- - | -- - | - - - - -
-
- currentEpoch = _epoch;- - |
-
13 | - - -- - | -- - | - - - - -
-
- }- - |
-
14 | - - -- - | -- - | - - - - -
-
- }- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -1 / 7 (14.3%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {IHorizonStaking} from 'interfaces/external/IHorizonStaking.sol';- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- contract MockHorizonStaking {- - |
-
8 | - - -- - | -- - | - - - - -
-
- IERC20 public immutable GRT;- - |
-
9 | - - -- - | -- - | - - - - -
-
- mapping(address => mapping(address => IHorizonStaking.Provision)) public provisions;- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
11 | - - -- - | -- - | - - - - -
-
- constructor(IERC20 _grt) {- - |
-
12 | - - -
-
- √
-
- |
- - - | - - - - -
-
- GRT = _grt;- - |
-
13 | - - -- - | -- - | - - - - -
-
- }- - |
-
14 | - - -- - | -- - | - - - - -- - - - | -
15 | - - -- - | -- - | - - - - -
-
- function getProvision(- - |
-
16 | - - -- - | -- - | - - - - -
-
- address _serviceProvider,- - |
-
17 | - - -- - | -- - | - - - - -
-
- address _verifier- - |
-
18 | - - -- - | -- - | - - - - -
-
- ) external view returns (IHorizonStaking.Provision memory) {- - |
-
19 | - - -- - | -- - | - - - - -
-
- return provisions[_serviceProvider][_verifier];- - |
-
20 | - - -- - | -- - | - - - - -
-
- }- - |
-
21 | - - -- - | -- - | - - - - -- - - - | -
22 | - - -- - | -- - | - - - - -
-
- function provision(- - |
-
23 | - - -- - | -- - | - - - - -
-
- address _serviceProvider,- - |
-
24 | - - -- - | -- - | - - - - -
-
- address _verifier,- - |
-
25 | - - -- - | -- - | - - - - -
-
- uint256 _tokens,- - |
-
26 | - - -- - | -- - | - - - - -
-
- uint32 _maxVerifierCut,- - |
-
27 | - - -- - | -- - | - - - - -
-
- uint64 _thawingPeriod- - |
-
28 | - - -- - | -- - | - - - - -
-
- ) external {- - |
-
29 | - - -- - | -- - | - - - - -
-
- provisions[_serviceProvider][_verifier] = IHorizonStaking.Provision({- - |
-
30 | - - -- - | -- - | - - - - -
-
- tokens: _tokens,- - |
-
31 | - - -- - | -- - | - - - - -
-
- tokensThawing: 0,- - |
-
32 | - - -- - | -- - | - - - - -
-
- sharesThawing: 0,- - |
-
33 | - - -- - | -- - | - - - - -
-
- maxVerifierCut: _maxVerifierCut,- - |
-
34 | - - -- - | -- - | - - - - -
-
- thawingPeriod: _thawingPeriod,- - |
-
35 | - - -- - | -- - | - - - - -
-
- createdAt: uint64(block.timestamp),- - |
-
36 | - - -- - | -- - | - - - - -
-
- maxVerifierCutPending: 0,- - |
-
37 | - - -- - | -- - | - - - - -
-
- thawingPeriodPending: 0- - |
-
38 | - - -- - | -- - | - - - - -
-
- });- - |
-
39 | - - -- - | -- - | - - - - -
-
- }- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- function slash(address, uint256, uint256 _tokensVerifier, address _verifierDestination) external {- - |
-
42 | - - -- - | -- - | - - - - -
-
- GRT.transfer(_verifierDestination, _tokensVerifier);- - |
-
43 | - - -- - | -- - | - - - - -
-
- }- - |
-
44 | - - -- - | -- - | - - - - -
-
- }- - |
-
45 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -21 / 32 (65.6%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity ^0.8.19;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IStdCheats} from "./IStdCheats.sol";- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- // override forge-std:- - |
-
7 | - - -- - | -- - | - - - - -
-
- // - vm, avoiding unsupported cheatcode- - |
-
8 | - - -- - | -- - | - - - - -
-
- // - assertEq, allowing custom message in Medusa- - |
-
9 | - - -- - | -- - | - - - - -
-
- // - assertTrue, allowing custom message in Medusa- - |
-
10 | - - -- - | -- - | - - - - -
-
- // - makeAddr, bypassing the limitation of non-existing label cheatcode- - |
-
11 | - - -- - | -- - | - - - - -
-
- // etc- - |
-
12 | - - -- - | -- - | - - - - -
-
- contract Utils {- - |
-
13 | - - -- - | -- - | - - - - -
-
- IStdCheats internal vm =- - |
-
14 | - - -
-
- √
-
- |
- - - | - - - - -
-
- IStdCheats(address(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D));- - |
-
15 | - - -- - | -- - | - - - - -- - - - | -
16 | - - -- - | -- - | - - - - -
-
- event TestFailure(string reason);- - |
-
17 | - - -- - | -- - | - - - - -
-
- event AddressMade(string label, address addressGenerated);- - |
-
18 | - - -- - | -- - | - - - - -- - - - | -
19 | - - -- - | -- - | - - - - -
-
- function makeAddr(string memory label) internal returns (address) {- - |
-
20 | - - -- - | -- - | - - - - -
-
- address genAddress = address(- - |
-
21 | - - -- - | -- - | - - - - -
-
- uint160(uint256(keccak256(abi.encodePacked(label))))- - |
-
22 | - - -- - | -- - | - - - - -
-
- );- - |
-
23 | - - -- - | -- - | - - - - -
-
- emit AddressMade(label, genAddress);- - |
-
24 | - - -- - | -- - | - - - - -
-
- return genAddress;- - |
-
25 | - - -- - | -- - | - - - - -
-
- }- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -- - | - - - - -
-
- // same as forge-std- - |
-
28 | - - -- - | -- - | - - - - -
-
- function bound(- - |
-
29 | - - -- - | -- - | - - - - -
-
- uint256 x,- - |
-
30 | - - -- - | -- - | - - - - -
-
- uint256 min,- - |
-
31 | - - -- - | -- - | - - - - -
-
- uint256 max- - |
-
32 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- ) internal pure returns (uint256 result) {- - |
-
33 | - - -- - | -- - | - - - - -
-
- //solhint-disable custom-errors- - |
-
34 | - - -- - | -- - | - - - - -
-
- require(- - |
-
35 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- min <= max,- - |
-
36 | - - -- - | -- - | - - - - -
-
- "StdUtils bound(uint256,uint256,uint256): Max is less than min."- - |
-
37 | - - -- - | -- - | - - - - -
-
- );- - |
-
38 | - - -- - | -- - | - - - - -- - - - | -
39 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 UINT256_MAX = 2 ** 256 - 1;- - |
-
40 | - - -- - | -- - | - - - - -- - - - | -
41 | - - -- - | -- - | - - - - -
-
- // If x is between min and max, return x directly. This is to ensure that dictionary values- - |
-
42 | - - -- - | -- - | - - - - -
-
- // do not get shifted if the min is nonzero. More info: https://github.com/foundry-rs/forge-std/issues/188- - |
-
43 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (x >= min && x <= max) return x;- - |
-
44 | - - -- - | -- - | - - - - -- - - - | -
45 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 size = max - min + 1;- - |
-
46 | - - -- - | -- - | - - - - -- - - - | -
47 | - - -- - | -- - | - - - - -
-
- // If the value is 0, 1, 2, 3, wrap that to min, min+1, min+2, min+3. Similarly for the UINT256_MAX side.- - |
-
48 | - - -- - | -- - | - - - - -
-
- // This helps ensure coverage of the min/max values.- - |
-
49 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (x <= 3 && size > x) return min + x;- - |
-
50 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (x >= UINT256_MAX - 3 && size > UINT256_MAX - x) {- - |
-
51 | - - -
-
- √
-
- |
- - - | - - - - -
-
- return max - (UINT256_MAX - x);- - |
-
52 | - - -- - | -- - | - - - - -
-
- }- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -- - | - - - - -
-
- // Otherwise, wrap x into the range [min, max], i.e. the range is inclusive.- - |
-
55 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (x > max) {- - |
-
56 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 diff = x - max;- - |
-
57 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- uint256 rem = diff % size;- - |
-
58 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- if (rem == 0) return max;- - |
-
59 | - - -
-
- √
-
- |
-
-
- ⟳
-
- |
-
-
-
-
-
-
- result = min + rem - 1;- - |
-
60 | - - -- - | -- - | - - - - -
-
- } else if (x < min) {- - |
-
61 | - - -- - | -- - | - - - - -
-
- uint256 diff = min - x;- - |
-
62 | - - -- - | -- - | - - - - -
-
- uint256 rem = diff % size;- - |
-
63 | - - -- - | -- - | - - - - -
-
- if (rem == 0) return min;- - |
-
64 | - - -- - | -- - | - - - - -
-
- result = max - rem + 1;- - |
-
65 | - - -- - | -- - | - - - - -
-
- }- - |
-
66 | - - -- - | -- - | - - - - -
-
- }- - |
-
67 | - - -- - | -- - | - - - - -- - - - | -
68 | - - -- - | -- - | - - - - -
-
- // todo: convert everything to b32 (then only one implementation)- - |
-
69 | - - -- - | -- - | - - - - -- - - - | -
70 | - - -- - | -- - | - - - - -
-
- function assertEq(uint256 a, uint256 b) internal {- - |
-
71 | - - -- - | -- - | - - - - -
-
- assertEq(a, b, "assertEq: a != b");- - |
-
72 | - - -- - | -- - | - - - - -
-
- }- - |
-
73 | - - -- - | -- - | - - - - -- - - - | -
74 | - - -- - | -- - | - - - - -
-
- function assertEq(uint256 a, uint256 b, string memory reason) internal {- - |
-
75 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- if (a != b) {- - |
-
76 | - - -- - | -- - | - - - - -
-
- emit TestFailure(reason);- - |
-
77 | - - -- - | -- - | - - - - -
-
- assert(false);- - |
-
78 | - - -- - | -- - | - - - - -
-
- }- - |
-
79 | - - -- - | -- - | - - - - -
-
- }- - |
-
80 | - - -- - | -- - | - - - - -- - - - | -
81 | - - -- - | -- - | - - - - -
-
- function assertEq(address a, address b) internal {- - |
-
82 | - - -- - | -- - | - - - - -
-
- assertEq(a, b, "assertEq: a != b");- - |
-
83 | - - -- - | -- - | - - - - -
-
- }- - |
-
84 | - - -- - | -- - | - - - - -- - - - | -
85 | - - -- - | -- - | - - - - -
-
- function assertEq(address a, address b, string memory reason) internal {- - |
-
86 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- if (a != b) {- - |
-
87 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- emit TestFailure(reason);- - |
-
88 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assert(false);- - |
-
89 | - - -- - | -- - | - - - - -
-
- }- - |
-
90 | - - -- - | -- - | - - - - -
-
- }- - |
-
91 | - - -- - | -- - | - - - - -- - - - | -
92 | - - -- - | -- - | - - - - -
-
- function assertEq(bytes memory a, bytes memory b) internal {- - |
-
93 | - - -- - | -- - | - - - - -
-
- assertEq(a, b, "assertEq: a != b");- - |
-
94 | - - -- - | -- - | - - - - -
-
- }- - |
-
95 | - - -- - | -- - | - - - - -- - - - | -
96 | - - -- - | -- - | - - - - -
-
- function assertEq(- - |
-
97 | - - -- - | -- - | - - - - -
-
- bytes memory a,- - |
-
98 | - - -- - | -- - | - - - - -
-
- bytes memory b,- - |
-
99 | - - -- - | -- - | - - - - -
-
- string memory reason- - |
-
100 | - - -- - | -- - | - - - - -
-
- ) internal {- - |
-
101 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- if (a.length != b.length) {- - |
-
102 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- emit TestFailure(reason);- - |
-
103 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assert(false);- - |
-
104 | - - -- - | -- - | - - - - -
-
- }- - |
-
105 | - - -- - | -- - | - - - - -
-
- for (uint256 i = 0; i < a.length; i++) {- - |
-
106 | - - -- - | -- - | - - - - -
-
- if (a[i] != b[i]) {- - |
-
107 | - - -- - | -- - | - - - - -
-
- emit TestFailure(reason);- - |
-
108 | - - -- - | -- - | - - - - -
-
- assert(false);- - |
-
109 | - - -- - | -- - | - - - - -
-
- }- - |
-
110 | - - -- - | -- - | - - - - -
-
- }- - |
-
111 | - - -- - | -- - | - - - - -
-
- }- - |
-
112 | - - -- - | -- - | - - - - -- - - - | -
113 | - - -- - | -- - | - - - - -
-
- function assertTrue(bool a) internal {- - |
-
114 | - - -- - | -- - | - - - - -
-
- assertTrue(a, "assertTrue: !a");- - |
-
115 | - - -- - | -- - | - - - - -
-
- }- - |
-
116 | - - -- - | -- - | - - - - -- - - - | -
117 | - - -- - | -- - | - - - - -
-
- function assertTrue(bool a, string memory reason) internal {- - |
-
118 | - - -- - | -- - | - - - - -
-
- if (!a) {- - |
-
119 | - - -- - | -- - | - - - - -
-
- emit TestFailure(reason);- - |
-
120 | - - -- - | -- - | - - - - -
-
- assert(false);- - |
-
121 | - - -- - | -- - | - - - - -
-
- }- - |
-
122 | - - -- - | -- - | - - - - -
-
- }- - |
-
123 | - - -- - | -- - | - - - - -
-
- }- - |
-
124 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -0 / 2 (0.0%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {HandlerParent} from "../handlers/HandlerParent.t.sol";- - |
-
5 | - - -- - | -- - | - - - - -- - - - | -
6 | - - -- - | -- - | - - - - -
-
- contract PropertyEbo is HandlerParent {- - |
-
7 | - - -- - | -- - | - - - - -
-
- //solhint-disable no-empty-blocks- - |
-
8 | - - -- - | -- - | - - - - -
-
- constructor() {}- - |
-
9 | - - -- - | -- - | - - - - -
-
- }- - |
-
10 | - - -- - | -- - | - - - - -- - - - | -
Lines covered: | -33 / 51 (64.7%) | -
---|
1 | - - -- - | -- - | - - - - -
-
- // SPDX-License-Identifier: MIT- - |
-
2 | - - -- - | -- - | - - - - -
-
- pragma solidity 0.8.26;- - |
-
3 | - - -- - | -- - | - - - - -- - - - | -
4 | - - -- - | -- - | - - - - -
-
- import {IOracle} from "@defi-wonderland/prophet-core/solidity/contracts/Oracle.sol";- - |
-
5 | - - -- - | -- - | - - - - -
-
- import {PropertyEbo} from "./PropertyEbo.t.sol";- - |
-
6 | - - -- - | -- - | - - - - -- - - - | -
7 | - - -- - | -- - | - - - - -
-
- contract PropertyParent is PropertyEbo {- - |
-
8 | - - -- - | -- - | - - - - -
-
- function property_sanityCheck() external {- - |
-
9 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
10 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(eboRequestCreator.ORACLE()),- - |
-
11 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(oracle),- - |
-
12 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong oracle address"- - |
-
13 | - - -- - | -- - | - - - - -
-
- );- - |
-
14 | - - -- - | -- - | - - - - -- - - - | -
15 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
16 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(eboRequestCreator.ARBITRABLE()),- - |
-
17 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(arbitrable),- - |
-
18 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong arbitrable address"- - |
-
19 | - - -- - | -- - | - - - - -
-
- );- - |
-
20 | - - -- - | -- - | - - - - -- - - - | -
21 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
22 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- eboRequestCreator.START_EPOCH(),- - |
-
23 | - - -- - | -- - | - - - - -
-
- START_EPOCH,- - |
-
24 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong start epoch"- - |
-
25 | - - -- - | -- - | - - - - -
-
- );- - |
-
26 | - - -- - | -- - | - - - - -- - - - | -
27 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
28 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(eboRequestCreator.epochManager()),- - |
-
29 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(epochManager),- - |
-
30 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong epoch manager address"- - |
-
31 | - - -- - | -- - | - - - - -
-
- );- - |
-
32 | - - -- - | -- - | - - - - -- - - - | -
33 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- IOracle.Request memory initialRequestStored = eboRequestCreator- - |
-
34 | - - -- - | -- - | - - - - -
-
- .getRequestData();- - |
-
35 | - - -- - | -- - | - - - - -- - - - | -
36 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
37 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.requestModule,- - |
-
38 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(eboRequestModule),- - |
-
39 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong request module in initialRequest"- - |
-
40 | - - -- - | -- - | - - - - -
-
- );- - |
-
41 | - - -- - | -- - | - - - - -- - - - | -
42 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
43 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.responseModule,- - |
-
44 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(bondedResponseModule),- - |
-
45 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong response module in initialRequest"- - |
-
46 | - - -- - | -- - | - - - - -
-
- );- - |
-
47 | - - -- - | -- - | - - - - -- - - - | -
48 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
49 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.disputeModule,- - |
-
50 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(bondEscalationModule),- - |
-
51 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong disputeModule in initialRequest"- - |
-
52 | - - -- - | -- - | - - - - -
-
- );- - |
-
53 | - - -- - | -- - | - - - - -- - - - | -
54 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
55 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.resolutionModule,- - |
-
56 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(arbitratorModule),- - |
-
57 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong resolutionModule in initialRequest"- - |
-
58 | - - -- - | -- - | - - - - -
-
- );- - |
-
59 | - - -- - | -- - | - - - - -- - - - | -
60 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
61 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.finalityModule,- - |
-
62 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(eboFinalityModule),- - |
-
63 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong finalityModule in initialRequest"- - |
-
64 | - - -- - | -- - | - - - - -
-
- );- - |
-
65 | - - -- - | -- - | - - - - -- - - - | -
66 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
67 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.requester,- - |
-
68 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- address(eboRequestCreator),- - |
-
69 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong requester in initialRequest"- - |
-
70 | - - -- - | -- - | - - - - -
-
- );- - |
-
71 | - - -- - | -- - | - - - - -- - - - | -
72 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- assertEq(- - |
-
73 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- initialRequestStored.requestModuleData,- - |
-
74 | - - -- - | -- - | - - - - -
-
- abi.encodePacked(- - |
-
75 | - - -- - | -- - | - - - - -
-
- START_EPOCH,- - |
-
76 | - - -- - | -- - | - - - - -
-
- "mainnet",- - |
-
77 | - - -- - | -
-
- ⟳
-
- |
-
-
-
-
-
-
- horizonAccountingExtension,- - |
-
78 | - - -- - | -- - | - - - - -
-
- PAYMENT_AMOUNT- - |
-
79 | - - -- - | -- - | - - - - -
-
- ),- - |
-
80 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong requestModuleData in initialRequest"- - |
-
81 | - - -- - | -- - | - - - - -
-
- );- - |
-
82 | - - -- - | -- - | - - - - -- - - - | -
83 | - - -- - | -- - | - - - - -
-
- assertEq(- - |
-
84 | - - -- - | -- - | - - - - -
-
- initialRequestStored.responseModuleData,- - |
-
85 | - - -- - | -- - | - - - - -
-
- abi.encode(- - |
-
86 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension,- - |
-
87 | - - -- - | -- - | - - - - -
-
- GRT,- - |
-
88 | - - -- - | -- - | - - - - -
-
- RESPONSE_BOND_SIZE,- - |
-
89 | - - -- - | -- - | - - - - -
-
- RESPONSE_DEADLINE,- - |
-
90 | - - -- - | -- - | - - - - -
-
- RESPONSE_DISPUTE_WINDOW- - |
-
91 | - - -- - | -- - | - - - - -
-
- ),- - |
-
92 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong responseModuleData module data in initialRequest"- - |
-
93 | - - -- - | -- - | - - - - -
-
- );- - |
-
94 | - - -- - | -- - | - - - - -- - - - | -
95 | - - -- - | -- - | - - - - -
-
- assertEq(- - |
-
96 | - - -- - | -- - | - - - - -
-
- initialRequestStored.disputeModuleData,- - |
-
97 | - - -- - | -- - | - - - - -
-
- abi.encode(- - |
-
98 | - - -- - | -- - | - - - - -
-
- horizonAccountingExtension,- - |
-
99 | - - -- - | -- - | - - - - -
-
- GRT,- - |
-
100 | - - -- - | -- - | - - - - -
-
- DISPUTE_BOND_SIZE,- - |
-
101 | - - -- - | -- - | - - - - -
-
- MAX_NB_ESCALATION,- - |
-
102 | - - -- - | -- - | - - - - -
-
- DISPUTE_DEADLINE,- - |
-
103 | - - -- - | -- - | - - - - -
-
- TYING_BUFFER,- - |
-
104 | - - -- - | -- - | - - - - -
-
- DISPUTE_DISPUTE_WINDOW- - |
-
105 | - - -- - | -- - | - - - - -
-
- ),- - |
-
106 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong disputeModuleData in initialRequest"- - |
-
107 | - - -- - | -- - | - - - - -
-
- );- - |
-
108 | - - -- - | -- - | - - - - -- - - - | -
109 | - - -- - | -- - | - - - - -
-
- assertEq(- - |
-
110 | - - -- - | -- - | - - - - -
-
- initialRequestStored.resolutionModuleData,- - |
-
111 | - - -- - | -- - | - - - - -
-
- abi.encode(councilArbitrator),- - |
-
112 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong resolutionModuleData in initialRequest"- - |
-
113 | - - -- - | -- - | - - - - -
-
- );- - |
-
114 | - - -- - | -- - | - - - - -- - - - | -
115 | - - -- - | -- - | - - - - -
-
- assertEq(- - |
-
116 | - - -- - | -- - | - - - - -
-
- initialRequestStored.finalityModuleData,- - |
-
117 | - - -- - | -- - | - - - - -
-
- abi.encode(eboFinalityModule),- - |
-
118 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong finality module data in initialRequest"- - |
-
119 | - - -- - | -- - | - - - - -
-
- );- - |
-
120 | - - -- - | -- - | - - - - -- - - - | -
121 | - - -- - | -- - | - - - - -
-
- assertEq(- - |
-
122 | - - -- - | -- - | - - - - -
-
- initialRequestStored.nonce,- - |
-
123 | - - -- - | -- - | - - - - -
-
- 0,- - |
-
124 | - - -- - | -- - | - - - - -
-
- "prop-0: wrong nonce in initialRequest"- - |
-
125 | - - -- - | -- - | - - - - -
-
- );- - |
-
126 | - - -- - | -- - | - - - - -
-
- }- - |
-
127 | - - -- - | -- - | - - - - -
-
- }- - |
-
128 | - - -- - | -- - | - - - - -- - - - | -